{
  "openapi": "3.0.1",
  "info": {
    "title": "Popdock API V3",
    "description": "RESTful API for the Popdock business intelligence and data management platform.",
    "termsOfService": "https://www.popdock.com/terms",
    "contact": {
      "name": "eOne Solutions",
      "url": "https://www.popdock.com"
    },
    "license": {
      "name": "Proprietary"
    },
    "version": "3.0"
  },
  "paths": {
    "/api/v3/account": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Get a list of accounts",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The accounts available to the authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSharedAccount"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/account/{id}": {
      "get": {
        "tags": [
          "Account"
        ],
        "summary": "Gets a single account the current user has access to, by its id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The account's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedAccount"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid, or the user has no access to that account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/account/switch/{id}": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Switches the active account, returning a Browser Extension token scoped to the target account.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The unique identifier (GUID) of the account to switch to.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A token for the target account (an existing token is reused when one already exists).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExchangeTokenResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is invalid, or the user does not have access to that account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/exchange-token": {
      "post": {
        "tags": [
          "Account"
        ],
        "summary": "Exchanges Basic authentication credentials for an API token for the current account and application.",
        "description": "Reuses an existing token for the same user and application when one exists; otherwise issues a new one. When multi-factor authentication is required, the response flags this instead of returning a token.",
        "responses": {
          "200": {
            "description": "A token for the authenticated user, or a flag indicating that MFA is required.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExchangeTokenResponse"
                }
              }
            }
          },
          "500": {
            "description": "An error occurred while issuing the token."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-action-field/{id}": {
      "get": {
        "tags": [
          "Action fields"
        ],
        "summary": "Get a single MCP tool action field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool action field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested action field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolActionFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No action field exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Action fields"
        ],
        "summary": "Update a MCP tool action field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolActionFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolActionFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolActionFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolActionFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Action fields"
        ],
        "summary": "Delete a MCP tool action field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-action-field": {
      "post": {
        "tags": [
          "Action fields"
        ],
        "summary": "Add a new MCP tool action field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolActionFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolActionFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolActionFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolActionFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Gets an action by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested action.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No action exists with that id, or its connector belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Actions"
        ],
        "summary": "Partially updates an action (name, description, show type, button labels and task-type-specific settings).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchActionRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Create Support Ticket"
                  }
                },
                "Change endpoint": {
                  "value": {
                    "Endpoint": "/v2/tickets",
                    "Method": "Post"
                  }
                },
                "Update button labels": {
                  "value": {
                    "SubmitButtonLabel": "Submit",
                    "CancelButtonLabel": "Discard"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchActionRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Create Support Ticket"
                  }
                },
                "Change endpoint": {
                  "value": {
                    "Endpoint": "/v2/tickets",
                    "Method": "Post"
                  }
                },
                "Update button labels": {
                  "value": {
                    "SubmitButtonLabel": "Submit",
                    "CancelButtonLabel": "Discard"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchActionRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Create Support Ticket"
                  }
                },
                "Change endpoint": {
                  "value": {
                    "Endpoint": "/v2/tickets",
                    "Method": "Post"
                  }
                },
                "Update button labels": {
                  "value": {
                    "SubmitButtonLabel": "Submit",
                    "CancelButtonLabel": "Discard"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The action was updated."
          },
          "400": {
            "description": "A supplied value is too long."
          },
          "404": {
            "description": "No action exists with that id, or its connector belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Actions"
        ],
        "summary": "Deletes an action.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The action was deleted."
          },
          "404": {
            "description": "No action exists with that id, or its connector belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}/field": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a list of fields for an action",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The action's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfActionFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No action exists with that id, or its connector belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}/parameter": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a list of parameters for an action",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The action's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfActionParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No action exists with that id, or its connector belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}/default-value": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a list of default values for an action",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The action's default values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfActionDefaultValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No action exists with that id, or its connector belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}/swagger": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Generates a Swagger (OpenAPI 2.0) definition for an action, for use by external tools such as Power Automate.",
        "description": "Describes the action's fields as request body properties (with types, defaults, enums and dynamic lookups) and exposes lookup operations for lookup-backed fields. Allows anonymous access so external connectors can fetch the definition.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The action's Swagger 2.0 definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "No action exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}/field-lookup-values": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Returns the available value/display pairs for an action field backed by a lookup.",
        "description": "Queries the lookup field's entity (honoring the `company` query parameter) and returns each row's value and display field as a key/value pair.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The lookup's value/display pairs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfKeyValuePairOfStringAndString"
                }
              }
            }
          },
          "404": {
            "description": "No matching field/entity exists, or the caller cannot access the entity."
          },
          "500": {
            "description": "An error occurred while querying the lookup data."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Creates an action of the requested task type (connector action, open website, send API request, stored procedure or run workflow).",
        "description": "Required fields and display settings vary by task type and show type (none, confirmation or form).",
        "requestBody": {
          "description": "The action to create. ConnectorId, Name, TaskType and ShowType are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostActionRequest"
              },
              "examples": {
                "REST action": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Create Ticket",
                    "Description": "Creates a support ticket in the source system.",
                    "TaskType": "SendApiRequest",
                    "ShowType": "Confirmation",
                    "ConfirmationPrompt": "Create this ticket?",
                    "SubmitButtonLabel": "Create",
                    "CancelButtonLabel": "Cancel",
                    "Endpoint": "/tickets",
                    "Method": "Post",
                    "Body": "{ \"subject\": \"{subject}\", \"priority\": \"{priority}\" }",
                    "BodyType": "Json"
                  }
                },
                "Workflow action": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Run Approval",
                    "Description": "Triggers the approval workflow.",
                    "TaskType": "RunWorkflow",
                    "ShowType": "None",
                    "WorkflowId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostActionRequest"
              },
              "examples": {
                "REST action": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Create Ticket",
                    "Description": "Creates a support ticket in the source system.",
                    "TaskType": "SendApiRequest",
                    "ShowType": "Confirmation",
                    "ConfirmationPrompt": "Create this ticket?",
                    "SubmitButtonLabel": "Create",
                    "CancelButtonLabel": "Cancel",
                    "Endpoint": "/tickets",
                    "Method": "Post",
                    "Body": "{ \"subject\": \"{subject}\", \"priority\": \"{priority}\" }",
                    "BodyType": "Json"
                  }
                },
                "Workflow action": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Run Approval",
                    "Description": "Triggers the approval workflow.",
                    "TaskType": "RunWorkflow",
                    "ShowType": "None",
                    "WorkflowId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostActionRequest"
              },
              "examples": {
                "REST action": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Create Ticket",
                    "Description": "Creates a support ticket in the source system.",
                    "TaskType": "SendApiRequest",
                    "ShowType": "Confirmation",
                    "ConfirmationPrompt": "Create this ticket?",
                    "SubmitButtonLabel": "Create",
                    "CancelButtonLabel": "Cancel",
                    "Endpoint": "/tickets",
                    "Method": "Post",
                    "Body": "{ \"subject\": \"{subject}\", \"priority\": \"{priority}\" }",
                    "BodyType": "Json"
                  }
                },
                "Workflow action": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Run Approval",
                    "Description": "Triggers the approval workflow.",
                    "TaskType": "RunWorkflow",
                    "ShowType": "None",
                    "WorkflowId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created action.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long, or the task/show type is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action/{id}/run": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Runs an action with the supplied field values and returns its result.",
        "description": "Field values may be keyed by field id or by the field's pascalized label; enum values are resolved against the field's list items.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Optional company (GUID) to run the action against; must belong to the action's connector.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The action field values to submit.",
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "text/json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "object",
                "additionalProperties": { }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The action result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PopdockShared.Action.ActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No action exists with that id, the company is invalid, or the connector belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-default-value/{id}": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a single action default value",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionDefaultValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Actions"
        ],
        "summary": "Update a action default value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionDefaultValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionDefaultValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionDefaultValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionDefaultValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Actions"
        ],
        "summary": "Delete a action default value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-default-value": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Add a new action default value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionDefaultValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionDefaultValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionDefaultValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionDefaultValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-field/{id}/list-item": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a list of list items for an action field",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The action field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the action field's list items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfActionFieldListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-field/{id}": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a single action field",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Actions"
        ],
        "summary": "Update a action field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Actions"
        ],
        "summary": "Delete a action field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-field": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Add a new action field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-field-list-item/{id}": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a single action field list item",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionFieldListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Actions"
        ],
        "summary": "Update a action field list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldListItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionFieldListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Actions"
        ],
        "summary": "Delete a action field list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-field-list-item": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Add a new action field list item",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionFieldListItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionFieldListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-parameter/{id}": {
      "get": {
        "tags": [
          "Actions"
        ],
        "summary": "Get a single action parameter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Actions"
        ],
        "summary": "Update a action parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Actions"
        ],
        "summary": "Delete a action parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/action-parameter": {
      "post": {
        "tags": [
          "Actions"
        ],
        "summary": "Add a new action parameter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteActionParameterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActionParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/ai-tone-modifier": {
      "get": {
        "tags": [
          "AI tone modifiers"
        ],
        "summary": "Get a list of AI tone modifiers",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiToneModifierResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "AI tone modifiers"
        ],
        "summary": "Add a new AI tone modifier",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiToneModifierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiToneModifierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiToneModifierRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiToneModifierResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/ai-tone-modifier/{id}": {
      "get": {
        "tags": [
          "AI tone modifiers"
        ],
        "summary": "Get a single AI tone modifier",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiToneModifierResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "AI tone modifiers"
        ],
        "summary": "Update a AI tone modifier",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiToneModifierRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiToneModifierRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiToneModifierRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiToneModifierResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "AI tone modifiers"
        ],
        "summary": "Delete a AI tone modifier",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-client-instruction/{id}": {
      "get": {
        "tags": [
          "Client instructions"
        ],
        "summary": "Get a single MCP tool client instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The client instruction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested client instruction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolClientInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No client instruction exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Client instructions"
        ],
        "summary": "Update a MCP tool client instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolClientInstructionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolClientInstructionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolClientInstructionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolClientInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Client instructions"
        ],
        "summary": "Delete a MCP tool client instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-client-instruction": {
      "post": {
        "tags": [
          "Client instructions"
        ],
        "summary": "Add a new MCP tool client instruction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolClientInstructionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolClientInstructionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolClientInstructionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolClientInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client-capability/{id}": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Get a single MCP client capability",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientCapabilityResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Clients"
        ],
        "summary": "Update a MCP client capability",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientCapabilityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientCapabilityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientCapabilityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientCapabilityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Clients"
        ],
        "summary": "Delete a MCP client capability",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client-capability": {
      "post": {
        "tags": [
          "Clients"
        ],
        "summary": "Add a new MCP client capability",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientCapabilityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientCapabilityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientCapabilityRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientCapabilityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client/{id}/parameter": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Get a list of parameters for an MCP client",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP client's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the client's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpClientParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client/{id}/capability": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Get a list of capabilities for an MCP client",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP client's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the client's capabilities.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpClientCapabilityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Get a list of MCP clients",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpClientResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Clients"
        ],
        "summary": "Add a new MCP client",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientRequest"
              },
              "examples": {
                "Client": {
                  "value": {
                    "Name": "Claude Desktop",
                    "Type": "Claude"
                  }
                },
                "Identified client": {
                  "value": {
                    "Name": "Internal Integration",
                    "Type": "Custom",
                    "IdentifierType": 1,
                    "IdentifierKey": "X-Api-Key",
                    "IdentifierValue": "a1b2c3d4e5f6"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientRequest"
              },
              "examples": {
                "Client": {
                  "value": {
                    "Name": "Claude Desktop",
                    "Type": "Claude"
                  }
                },
                "Identified client": {
                  "value": {
                    "Name": "Internal Integration",
                    "Type": "Custom",
                    "IdentifierType": 1,
                    "IdentifierKey": "X-Api-Key",
                    "IdentifierValue": "a1b2c3d4e5f6"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientRequest"
              },
              "examples": {
                "Client": {
                  "value": {
                    "Name": "Claude Desktop",
                    "Type": "Claude"
                  }
                },
                "Identified client": {
                  "value": {
                    "Name": "Internal Integration",
                    "Type": "Custom",
                    "IdentifierType": 1,
                    "IdentifierKey": "X-Api-Key",
                    "IdentifierValue": "a1b2c3d4e5f6"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client/{id}": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Get a single MCP client",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Clients"
        ],
        "summary": "Update a MCP client",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The client's display name. Required on create. Required when creating (POST).",
                    "nullable": true,
                    "example": "Claude Desktop"
                  },
                  "Type": {
                    "$ref": "#/components/schemas/McpClientType"
                  },
                  "IdentifierType": {
                    "type": "integer",
                    "description": "Identifier-type code. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "format": "int32",
                    "nullable": true,
                    "example": 1
                  },
                  "IdentifierKey": {
                    "type": "string",
                    "description": "Identifier key (e.g. a header name). Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "nullable": true,
                    "example": "X-Api-Key"
                  },
                  "IdentifierValue": {
                    "type": "string",
                    "description": "Identifier value matched against the client's request. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "nullable": true,
                    "example": "a1b2c3d4e5f6"
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an MCP client (a client allowed to connect to your servers)."
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Claude Desktop (Team)"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "required": [
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The client's display name. Required on create. Required when creating (POST).",
                    "nullable": true,
                    "example": "Claude Desktop"
                  },
                  "Type": {
                    "$ref": "#/components/schemas/McpClientType"
                  },
                  "IdentifierType": {
                    "type": "integer",
                    "description": "Identifier-type code. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "format": "int32",
                    "nullable": true,
                    "example": 1
                  },
                  "IdentifierKey": {
                    "type": "string",
                    "description": "Identifier key (e.g. a header name). Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "nullable": true,
                    "example": "X-Api-Key"
                  },
                  "IdentifierValue": {
                    "type": "string",
                    "description": "Identifier value matched against the client's request. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "nullable": true,
                    "example": "a1b2c3d4e5f6"
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an MCP client (a client allowed to connect to your servers)."
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Claude Desktop (Team)"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "required": [
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The client's display name. Required on create. Required when creating (POST).",
                    "nullable": true,
                    "example": "Claude Desktop"
                  },
                  "Type": {
                    "$ref": "#/components/schemas/McpClientType"
                  },
                  "IdentifierType": {
                    "type": "integer",
                    "description": "Identifier-type code. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "format": "int32",
                    "nullable": true,
                    "example": 1
                  },
                  "IdentifierKey": {
                    "type": "string",
                    "description": "Identifier key (e.g. a header name). Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "nullable": true,
                    "example": "X-Api-Key"
                  },
                  "IdentifierValue": {
                    "type": "string",
                    "description": "Identifier value matched against the client's request. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
                    "nullable": true,
                    "example": "a1b2c3d4e5f6"
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an MCP client (a client allowed to connect to your servers)."
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Claude Desktop (Team)"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Clients"
        ],
        "summary": "Delete a MCP client",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client-parameter/{id}": {
      "get": {
        "tags": [
          "Clients"
        ],
        "summary": "Get a single MCP client parameter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Clients"
        ],
        "summary": "Update a MCP client parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Clients"
        ],
        "summary": "Delete a MCP client parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-client-parameter": {
      "post": {
        "tags": [
          "Clients"
        ],
        "summary": "Add a new MCP client parameter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpClientParameterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpClientParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding/{id}": {
      "get": {
        "tags": [
          "Color coding"
        ],
        "summary": "Gets an entity color coding by id, including its field, colors and rules with resolved values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity color coding's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested color coding.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingResponse"
                }
              }
            }
          },
          "404": {
            "description": "No color coding exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Color coding"
        ],
        "summary": "Partially updates an entity color coding's background and text colors.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity color coding's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityColorCodingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityColorCodingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityColorCodingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The color coding was updated."
          },
          "400": {
            "description": "A referenced color does not exist."
          },
          "404": {
            "description": "No color coding exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Color coding"
        ],
        "summary": "Deletes an entity color coding and its rules and rule values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity color coding's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The color coding was deleted."
          },
          "404": {
            "description": "No color coding exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding/{id}/rule": {
      "get": {
        "tags": [
          "Color coding"
        ],
        "summary": "Get a list of rules for an entity color coding",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity color coding's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The color coding's rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityColorCodingRule"
                }
              }
            }
          },
          "404": {
            "description": "No color coding exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding": {
      "post": {
        "tags": [
          "Color coding"
        ],
        "summary": "Creates an entity color coding (applied to the row, a field, or duplicate field values).",
        "requestBody": {
          "description": "The color coding definition (applies-to target, field, background/text colors). EntityId and AppliesTo are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityColorCodingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityColorCodingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityColorCodingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created color coding.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or a referenced color/field/entity is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding-rule/{id}": {
      "get": {
        "tags": [
          "Color coding"
        ],
        "summary": "Get a single entity color coding rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The color coding rule's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested rule.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingRule"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No rule exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Color coding"
        ],
        "summary": "Update a entity color coding rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingRule"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Color coding"
        ],
        "summary": "Delete a entity color coding rule",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding-rule/{id}/value": {
      "get": {
        "tags": [
          "Color coding"
        ],
        "summary": "Get a list of values for an entity color coding rule",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The color coding rule's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The rule's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityColorCodingRuleValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No rule exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding-rule": {
      "post": {
        "tags": [
          "Color coding"
        ],
        "summary": "Add a new entity color coding rule",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingRule"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding-rule-value/{id}": {
      "get": {
        "tags": [
          "Color coding"
        ],
        "summary": "Get a single entity color coding rule value",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingRuleValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Color coding"
        ],
        "summary": "Update a entity color coding rule value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingRuleValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Color coding"
        ],
        "summary": "Delete a entity color coding rule value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-color-coding-rule-value": {
      "post": {
        "tags": [
          "Color coding"
        ],
        "summary": "Add a new entity color coding rule value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityColorCodingRuleValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityColorCodingRuleValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/color": {
      "get": {
        "tags": [
          "Colors"
        ],
        "summary": "Get a list of colors",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfColorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Colors"
        ],
        "summary": "Add a new color",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorRequest"
              },
              "examples": {
                "Named color": {
                  "value": {
                    "Name": "Alert Red",
                    "HexColor": "E53935"
                  }
                },
                "Brand blue": {
                  "value": {
                    "Name": "Brand Blue",
                    "HexColor": "1E88E5"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorRequest"
              },
              "examples": {
                "Named color": {
                  "value": {
                    "Name": "Alert Red",
                    "HexColor": "E53935"
                  }
                },
                "Brand blue": {
                  "value": {
                    "Name": "Brand Blue",
                    "HexColor": "1E88E5"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorRequest"
              },
              "examples": {
                "Named color": {
                  "value": {
                    "Name": "Alert Red",
                    "HexColor": "E53935"
                  }
                },
                "Brand blue": {
                  "value": {
                    "Name": "Brand Blue",
                    "HexColor": "1E88E5"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/color/{id}": {
      "get": {
        "tags": [
          "Colors"
        ],
        "summary": "Get a single color",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Colors"
        ],
        "summary": "Update a color",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Critical Red"
                  }
                },
                "Recolor": {
                  "value": {
                    "HexColor": "6D4C41"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Critical Red"
                  }
                },
                "Recolor": {
                  "value": {
                    "HexColor": "6D4C41"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Critical Red"
                  }
                },
                "Recolor": {
                  "value": {
                    "HexColor": "6D4C41"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Colors"
        ],
        "summary": "Delete a color",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/color-palette-color": {
      "get": {
        "tags": [
          "Colors"
        ],
        "summary": "Get a list of color palette colors",
        "description": "Pass the palette via the `ColorPaletteId` query parameter, e.g. `?ColorPaletteId={id}`.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The palette's colors.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfColorPaletteColorResponse"
                }
              }
            }
          },
          "400": {
            "description": "The required `ColorPaletteId` query parameter was missing or malformed."
          },
          "404": {
            "description": "The palette does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Colors"
        ],
        "summary": "Add a new color palette color",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
              },
              "examples": {
                "Explicit order": {
                  "value": {
                    "ColorPaletteId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "HexColor": "E53935",
                    "Order": 1
                  }
                },
                "Auto-assigned order": {
                  "value": {
                    "ColorPaletteId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "HexColor": "1E88E5"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
              },
              "examples": {
                "Explicit order": {
                  "value": {
                    "ColorPaletteId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "HexColor": "E53935",
                    "Order": 1
                  }
                },
                "Auto-assigned order": {
                  "value": {
                    "ColorPaletteId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "HexColor": "1E88E5"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
              },
              "examples": {
                "Explicit order": {
                  "value": {
                    "ColorPaletteId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "HexColor": "E53935",
                    "Order": 1
                  }
                },
                "Auto-assigned order": {
                  "value": {
                    "ColorPaletteId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "HexColor": "1E88E5"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorPaletteColorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/color-palette-color/{id}": {
      "get": {
        "tags": [
          "Colors"
        ],
        "summary": "Get a single color palette color",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorPaletteColorResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Colors"
        ],
        "summary": "Update a color palette color",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
              },
              "examples": {
                "Change color": {
                  "value": {
                    "HexColor": "6D4C41"
                  }
                },
                "Reorder": {
                  "value": {
                    "Order": 4
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
              },
              "examples": {
                "Change color": {
                  "value": {
                    "HexColor": "6D4C41"
                  }
                },
                "Reorder": {
                  "value": {
                    "Order": 4
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
              },
              "examples": {
                "Change color": {
                  "value": {
                    "HexColor": "6D4C41"
                  }
                },
                "Reorder": {
                  "value": {
                    "Order": 4
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorPaletteColorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Colors"
        ],
        "summary": "Delete a color palette color",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/color-palette": {
      "get": {
        "tags": [
          "Colors"
        ],
        "summary": "Get a list of color palettes",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's color palettes.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfColorPaletteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Colors"
        ],
        "summary": "Add a new color palette",
        "requestBody": {
          "description": "The palette fields. Supply `Colors` to create the palette's colors inline.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteRequest"
              },
              "examples": {
                "Palette with colors": {
                  "value": {
                    "Name": "Brand Colors",
                    "Description": "Primary brand palette used across dashboards.",
                    "Colors": [
                      {
                        "HexColor": "E53935",
                        "Order": 1
                      },
                      {
                        "HexColor": "1E88E5",
                        "Order": 2
                      },
                      {
                        "HexColor": "43A047",
                        "Order": 3
                      }
                    ]
                  }
                },
                "Minimal (name only)": {
                  "value": {
                    "Name": "Status Colors"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteRequest"
              },
              "examples": {
                "Palette with colors": {
                  "value": {
                    "Name": "Brand Colors",
                    "Description": "Primary brand palette used across dashboards.",
                    "Colors": [
                      {
                        "HexColor": "E53935",
                        "Order": 1
                      },
                      {
                        "HexColor": "1E88E5",
                        "Order": 2
                      },
                      {
                        "HexColor": "43A047",
                        "Order": 3
                      }
                    ]
                  }
                },
                "Minimal (name only)": {
                  "value": {
                    "Name": "Status Colors"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteRequest"
              },
              "examples": {
                "Palette with colors": {
                  "value": {
                    "Name": "Brand Colors",
                    "Description": "Primary brand palette used across dashboards.",
                    "Colors": [
                      {
                        "HexColor": "E53935",
                        "Order": 1
                      },
                      {
                        "HexColor": "1E88E5",
                        "Order": 2
                      },
                      {
                        "HexColor": "43A047",
                        "Order": 3
                      }
                    ]
                  }
                },
                "Minimal (name only)": {
                  "value": {
                    "Name": "Status Colors"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created palette, including its colors.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorPaletteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a duplicate name or an invalid hex color)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/color-palette/{id}": {
      "get": {
        "tags": [
          "Colors"
        ],
        "summary": "Get a single color palette",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The palette's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested palette.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorPaletteResponse"
                }
              }
            }
          },
          "404": {
            "description": "The palette does not exist or belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Colors"
        ],
        "summary": "Update a color palette",
        "description": "`Colors` on the body is ignored here; manage colors via the `color-palette-color` endpoint.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The palette's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The fields to change. Omitted fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Brand Colors 2025"
                  }
                },
                "Update description only": {
                  "value": {
                    "Description": "Refreshed brand palette for the 2025 rebrand."
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Brand Colors 2025"
                  }
                },
                "Update description only": {
                  "value": {
                    "Description": "Refreshed brand palette for the 2025 rebrand."
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteColorPaletteRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Brand Colors 2025"
                  }
                },
                "Update description only": {
                  "value": {
                    "Description": "Refreshed brand palette for the 2025 rebrand."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated palette.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ColorPaletteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a duplicate name)."
          },
          "404": {
            "description": "The palette does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Colors"
        ],
        "summary": "Delete a color palette",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/company/{id}": {
      "get": {
        "tags": [
          "Companies"
        ],
        "summary": "Gets a company by id, including its connector and child companies.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The company's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No company exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Companies"
        ],
        "summary": "Partially updates a company's name and database name.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The company's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchCompanyRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Fabrikam Global"
                  }
                },
                "Change database": {
                  "value": {
                    "DatabaseName": "FABRIKAM2"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchCompanyRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Fabrikam Global"
                  }
                },
                "Change database": {
                  "value": {
                    "DatabaseName": "FABRIKAM2"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchCompanyRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Fabrikam Global"
                  }
                },
                "Change database": {
                  "value": {
                    "DatabaseName": "FABRIKAM2"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The company was updated."
          },
          "400": {
            "description": "The id is invalid, or a supplied value is too long."
          },
          "404": {
            "description": "No company exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Companies"
        ],
        "summary": "Deletes a company and its child companies.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The company's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The company and its children were deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No company exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/company/{id}/children": {
      "get": {
        "tags": [
          "Companies"
        ],
        "summary": "Get a list of child companies for a company",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The parent company's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The company's child companies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfCompanyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No company exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/company": {
      "post": {
        "tags": [
          "Companies"
        ],
        "summary": "Creates a company on a connector and grants the caller access to it.",
        "requestBody": {
          "description": "The company to create. ConnectorId, Name and DatabaseName are required; ParentCompanyId, when set, must belong to the same connector.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostCompanyRequest"
              },
              "examples": {
                "Company": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Fabrikam, Inc.",
                    "DatabaseName": "FABRIKAM"
                  }
                },
                "Child company": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Fabrikam UK",
                    "DatabaseName": "FABRIKAM_UK",
                    "ParentCompanyId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostCompanyRequest"
              },
              "examples": {
                "Company": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Fabrikam, Inc.",
                    "DatabaseName": "FABRIKAM"
                  }
                },
                "Child company": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Fabrikam UK",
                    "DatabaseName": "FABRIKAM_UK",
                    "ParentCompanyId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostCompanyRequest"
              },
              "examples": {
                "Company": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Fabrikam, Inc.",
                    "DatabaseName": "FABRIKAM"
                  }
                },
                "Child company": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Fabrikam UK",
                    "DatabaseName": "FABRIKAM_UK",
                    "ParentCompanyId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long, or the connector/parent company is invalid."
          },
          "404": {
            "description": "The parent company does not exist."
          },
          "500": {
            "description": "An error occurred while saving the company."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-company/{id}": {
      "get": {
        "tags": [
          "Companies"
        ],
        "summary": "Get a single MCP tool company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool company's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested tool company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No tool company exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Companies"
        ],
        "summary": "Update a MCP tool company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Companies"
        ],
        "summary": "Delete a MCP tool company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-company": {
      "post": {
        "tags": [
          "Companies"
        ],
        "summary": "Add a new MCP tool company",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-data-source/{id}": {
      "get": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Get a single connector AI data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector AI data source's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI data source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No AI data source exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Update a connector AI data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Delete a connector AI data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-data-source/{id}/filter": {
      "get": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Get a list of filters for a connector AI data source",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector AI data source's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the data source's filters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfConnectorAiDataSourceFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-data-source": {
      "post": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Add a new connector AI data source",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-data-source-filter/{id}": {
      "get": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Get a single connector AI data source filter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiDataSourceFilterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Update a connector AI data source filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceFilterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiDataSourceFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Delete a connector AI data source filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-data-source-filter": {
      "post": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Add a new connector AI data source filter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiDataSourceFilterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiDataSourceFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-model/{id}": {
      "get": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Get a single connector AI model",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiModelResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Update a connector AI model",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiModelRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiModelRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Delete a connector AI model",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-model": {
      "post": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Add a new connector AI model",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiModelRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiModelRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorAiModelRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-tool/{id}": {
      "get": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Gets a connector AI tool by id, including its linked MCP tool when it is a custom MCP tool.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No AI tool exists with that id, or its connector belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Updates a custom MCP connector AI tool's permission type.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The fields to change; only PermissionType is applied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConnectorAiToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConnectorAiToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostConnectorAiToolRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The AI tool was updated."
          },
          "400": {
            "description": "The id is invalid, or the tool is not a custom MCP tool (only those can be updated)."
          },
          "404": {
            "description": "No AI tool exists with that id, or its connector belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Deletes a connector AI tool.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI tool was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No AI tool exists with that id, or its connector belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-ai-tool": {
      "post": {
        "tags": [
          "Connector AI settings"
        ],
        "summary": "Adds an AI tool to a connector.",
        "description": "For custom MCP tools the referenced MCP tool must exist and belong to the caller's account; a default permission type is applied when none is supplied.",
        "requestBody": {
          "description": "The AI tool to create. ConnectorId and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConnectorAiToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostConnectorAiToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostConnectorAiToolRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created AI tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The connector or the referenced MCP tool does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-rest-error-code/{id}": {
      "get": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Get a single connector REST error code",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestErrorCodeResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Update a connector REST error code",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestErrorCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestErrorCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestErrorCodeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestErrorCodeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Delete a connector REST error code",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-rest-error-code": {
      "post": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Add a new connector REST error code",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestErrorCodeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestErrorCodeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestErrorCodeRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestErrorCodeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-rest-parameter/{id}": {
      "get": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Get a single connector REST parameter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Update a connector REST parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Delete a connector REST parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-rest-parameter": {
      "post": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Add a new connector REST parameter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestParameterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-rest-variable/{id}": {
      "get": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Get a single connector REST variable",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Update a connector REST variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Delete a connector REST variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector-rest-variable": {
      "post": {
        "tags": [
          "Connector REST settings"
        ],
        "summary": "Add a new connector REST variable",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteConnectorRestVariableRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorRestVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of connectors",
        "description": "Returns active connectors the caller holds a connector-user role on, each enriched with its company and group counts and setup branding (icon, primary color).\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "isRest",
            "in": "query",
            "description": "Filter to REST connectors (true) or non-REST connectors (false).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connectors available to the authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfConnectorResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied filter value was malformed."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Connectors"
        ],
        "summary": "Creates one or more connectors for the current account.",
        "requestBody": {
          "description": "The connectors to create. Each requires ConnectorType and Name; duplicate names are made unique automatically.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostConnectorRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostConnectorRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostConnectorRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created connectors.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ConnectorResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or no records were supplied."
          },
          "500": {
            "description": "An error occurred while saving the connectors."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Gets a single connector",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested connector and any child connectors.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConnectorResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Connectors"
        ],
        "summary": "Updates a connector",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchConnectorRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Finance — Dynamics GP"
                  }
                },
                "Set default company": {
                  "value": {
                    "DefaultCompanyId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                  }
                },
                "Customize company labels": {
                  "value": {
                    "CompanyPrompt": "Company",
                    "CompanyPluralPrompt": "Companies",
                    "Locale": "en-US"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchConnectorRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Finance — Dynamics GP"
                  }
                },
                "Set default company": {
                  "value": {
                    "DefaultCompanyId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                  }
                },
                "Customize company labels": {
                  "value": {
                    "CompanyPrompt": "Company",
                    "CompanyPluralPrompt": "Companies",
                    "Locale": "en-US"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchConnectorRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Finance — Dynamics GP"
                  }
                },
                "Set default company": {
                  "value": {
                    "DefaultCompanyId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                  }
                },
                "Customize company labels": {
                  "value": {
                    "CompanyPrompt": "Company",
                    "CompanyPluralPrompt": "Companies",
                    "Locale": "en-US"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The connector was updated."
          },
          "400": {
            "description": "A supplied value was invalid (e.g. a name clash, an unknown company, or an invalid locale)."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Connectors"
        ],
        "summary": "Deletes a connector",
        "description": "Cascades to the connector's entities, fields, list items, tables, joins, relationships, companies, entity groups and favorites (including favorite columns, restrictions, sharing, usage and tag links).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector and its dependent data were deleted."
          },
          "404": {
            "description": "No connector exists with that id."
          },
          "500": {
            "description": "An error occurred while deleting the connector or its dependents."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/role": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of roles for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The caller's connector security roles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSecurityRoleResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/validate": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Validates a connector's connectivity",
        "description": "Proxies a connection test to the query service and returns its status; a failing test surfaces the underlying error and status code.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector connection is valid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HttpResponseMessage"
                }
              }
            }
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/entity": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of lists for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's entities.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/action": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of actions for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's actions (connector-level and entity-level).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/entity-group": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of groups for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's entity groups.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/company": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of companies for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's companies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/ai-model": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of AI models for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's AI models.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiModelResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/ai-tool": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of AI tools for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's AI tools.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfConnectorAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/{id}/ai-data-source": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of AI data sources for a connector",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The connector's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The connector's AI data sources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfConnectorAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No connector exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/rest": {
      "post": {
        "tags": [
          "Connectors"
        ],
        "summary": "Creates a REST connector and its connection settings.",
        "description": "Configures the base URL, authentication (Basic, API key, bearer, NTLM, exchange-token or OAuth2), paging and date handling, then grants the creating user administrator and user roles on the new connector.",
        "requestBody": {
          "description": "The REST connector definition. Name is required and must be unique within the account.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRestConnectorRequest"
              },
              "examples": {
                "Minimal REST connector": {
                  "value": {
                    "Name": "My REST API",
                    "BaseUrl": "https://api.example.com/v1",
                    "Description": "Read-only connection to the example reporting API."
                  }
                },
                "With page-based paging": {
                  "value": {
                    "Name": "Example API (paged)",
                    "BaseUrl": "https://api.example.com/v1",
                    "PageParameter": "page",
                    "PageSize": 100,
                    "PageSizeParameter": "pageSize",
                    "Description": "Example API using page-number paging."
                  }
                },
                "With tags": {
                  "value": {
                    "Name": "Example API (tagged)",
                    "BaseUrl": "https://api.example.com/v1",
                    "Description": "Example API created with tags.",
                    "Tags": [
                      {
                        "Value": "Reporting"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRestConnectorRequest"
              },
              "examples": {
                "Minimal REST connector": {
                  "value": {
                    "Name": "My REST API",
                    "BaseUrl": "https://api.example.com/v1",
                    "Description": "Read-only connection to the example reporting API."
                  }
                },
                "With page-based paging": {
                  "value": {
                    "Name": "Example API (paged)",
                    "BaseUrl": "https://api.example.com/v1",
                    "PageParameter": "page",
                    "PageSize": 100,
                    "PageSizeParameter": "pageSize",
                    "Description": "Example API using page-number paging."
                  }
                },
                "With tags": {
                  "value": {
                    "Name": "Example API (tagged)",
                    "BaseUrl": "https://api.example.com/v1",
                    "Description": "Example API created with tags.",
                    "Tags": [
                      {
                        "Value": "Reporting"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostRestConnectorRequest"
              },
              "examples": {
                "Minimal REST connector": {
                  "value": {
                    "Name": "My REST API",
                    "BaseUrl": "https://api.example.com/v1",
                    "Description": "Read-only connection to the example reporting API."
                  }
                },
                "With page-based paging": {
                  "value": {
                    "Name": "Example API (paged)",
                    "BaseUrl": "https://api.example.com/v1",
                    "PageParameter": "page",
                    "PageSize": 100,
                    "PageSizeParameter": "pageSize",
                    "Description": "Example API using page-number paging."
                  }
                },
                "With tags": {
                  "value": {
                    "Name": "Example API (tagged)",
                    "BaseUrl": "https://api.example.com/v1",
                    "Description": "Example API created with tags.",
                    "Tags": [
                      {
                        "Value": "Reporting"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created REST connector.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestConnectorResponse"
                }
              }
            }
          },
          "400": {
            "description": "Name is missing, too long, or already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/connector/ai": {
      "get": {
        "tags": [
          "Connectors"
        ],
        "summary": "Get a list of connectors",
        "responses": {
          "200": {
            "description": "The AI-enabled connectors, with their id and name."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-attachment/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI attachment",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI attachment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI attachment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-attachment": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI attachment",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-data-source/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI data source's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI data source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No AI data source exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiDataSourceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiDataSourceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiDataSourceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-data-source": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI data source",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiDataSourceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiDataSourceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiDataSourceRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-apply/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI favorite apply",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteApplyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI favorite apply",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteApplyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteApplyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteApplyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI favorite apply",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-apply": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI favorite apply",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteApplyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteApplyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteApplyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-attachment/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI favorite attachment",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI favorite attachment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI favorite attachment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-attachment": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI favorite attachment",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Gets an entity detail AI favorite by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI favorite.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Partially updates an entity detail AI favorite (name, prompt and tone modifier).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailAiFavoriteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailAiFavoriteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailAiFavoriteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The AI favorite was updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied value is too long."
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Deletes an entity detail AI favorite along with its parameters, attachments, data sources, apply rules and tools.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite was deleted."
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite/{id}/apply": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a list of apply rules for an entity detail AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's apply rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteApplyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite/{id}/attachment": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a list of attachments for an entity detail AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's attachments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite/{id}/data-source": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a list of data sources for an entity detail AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's data sources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteDataSourceResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite/{id}/parameter": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a list of parameters for an entity detail AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite/{id}/tool": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a list of tools for an entity detail AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's tools.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteToolResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Adds an AI favorite (saved prompt) to an AI prompt detail view, optionally with nested data sources, parameters and tools.",
        "requestBody": {
          "description": "The AI favorite to create. EntityDetailId, Name and Prompt are required; the detail must be an AI prompt.\r\n            DataSources, Parameters and Tools are optional children created in the same request.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailAiFavoriteRequest"
              },
              "examples": {
                "Basic favorite": {
                  "value": {
                    "EntityDetailId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Summarize open orders",
                    "Prompt": "Summarize the open orders for this customer."
                  }
                },
                "Favorite with data sources, parameters and tools": {
                  "value": {
                    "EntityDetailId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Summarize open orders",
                    "Prompt": "Summarize the open orders for this customer placed after {Cutoff date}.",
                    "DataSources": [
                      {
                        "EntityDetailAiDataSourceId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                      }
                    ],
                    "Parameters": [
                      {
                        "Name": "Cutoff date",
                        "Label": "Cutoff date",
                        "FieldType": "Date",
                        "Type": "Parameter",
                        "Required": true
                      }
                    ],
                    "Tools": [
                      {
                        "EntityDetailAiToolId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailAiFavoriteRequest"
              },
              "examples": {
                "Basic favorite": {
                  "value": {
                    "EntityDetailId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Summarize open orders",
                    "Prompt": "Summarize the open orders for this customer."
                  }
                },
                "Favorite with data sources, parameters and tools": {
                  "value": {
                    "EntityDetailId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Summarize open orders",
                    "Prompt": "Summarize the open orders for this customer placed after {Cutoff date}.",
                    "DataSources": [
                      {
                        "EntityDetailAiDataSourceId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                      }
                    ],
                    "Parameters": [
                      {
                        "Name": "Cutoff date",
                        "Label": "Cutoff date",
                        "FieldType": "Date",
                        "Type": "Parameter",
                        "Required": true
                      }
                    ],
                    "Tools": [
                      {
                        "EntityDetailAiToolId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailAiFavoriteRequest"
              },
              "examples": {
                "Basic favorite": {
                  "value": {
                    "EntityDetailId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Summarize open orders",
                    "Prompt": "Summarize the open orders for this customer."
                  }
                },
                "Favorite with data sources, parameters and tools": {
                  "value": {
                    "EntityDetailId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Summarize open orders",
                    "Prompt": "Summarize the open orders for this customer placed after {Cutoff date}.",
                    "DataSources": [
                      {
                        "EntityDetailAiDataSourceId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                      }
                    ],
                    "Parameters": [
                      {
                        "Name": "Cutoff date",
                        "Label": "Cutoff date",
                        "FieldType": "Date",
                        "Type": "Parameter",
                        "Required": true
                      }
                    ],
                    "Tools": [
                      {
                        "EntityDetailAiToolId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created AI favorite, including any nested children that were created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long, the detail is not an AI prompt, the tone modifier is invalid, or a nested child is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-data-source/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI favorite data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite data source's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested data source.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No data source exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI favorite data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteDataSourceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteDataSourceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteDataSourceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI favorite data source",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-data-source": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI favorite data source",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteDataSourceRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteDataSourceRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteDataSourceRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteDataSourceResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-parameter/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Gets an entity detail AI favorite parameter by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Partially updates an entity detail AI favorite parameter.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailAiFavoriteParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailAiFavoriteParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailAiFavoriteParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The parameter was updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied value is too long."
          },
          "404": {
            "description": "No parameter exists with that id, or the caller cannot access its detail."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Deletes an entity detail AI favorite parameter and its list items.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter was deleted."
          },
          "404": {
            "description": "No parameter exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-parameter/{id}/list-item": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a list of list items for an entity detail AI favorite parameter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter's list items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteParameterListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or the caller cannot access its detail."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-parameter": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Adds a parameter (user parameter or calculation) to an entity detail AI favorite.",
        "requestBody": {
          "description": "The parameter to create. EntityDetailAiFavoriteId, Name, FieldType and Type are required; calculation parameters need a script and user parameters need a label.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailAiFavoriteParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailAiFavoriteParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailAiFavoriteParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long, or a value is invalid for the field type."
          },
          "404": {
            "description": "No AI favorite exists with that id, or the caller cannot access its detail."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-parameter-list-item/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI favorite parameter list item",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI favorite parameter list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteParameterListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteParameterListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteParameterListItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI favorite parameter list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-parameter-list-item": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI favorite parameter list item",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteParameterListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteParameterListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteParameterListItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-tool/{id}": {
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI favorite tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No tool exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI favorite tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteToolRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI favorite tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-favorite-tool": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI favorite tool",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiFavoriteToolRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiFavoriteToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-tool": {
      "post": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Add a new entity detail AI tool",
        "requestBody": {
          "description": "The detail and connector tool to link.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiToolRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created AI tool, including its connector tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. the detail is not an AI prompt or the connector tool does not exist)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-ai-tool/{id}": {
      "patch": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Update a entity detail AI tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The fields to change. Omitted fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailAiToolRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated AI tool, including its connector tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No AI tool exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Get a single entity detail AI tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No AI tool exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Detail AI settings"
        ],
        "summary": "Delete a entity detail AI tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Gets a detail (drill-down) view by id, with its color palette, AI settings, fields, filters and parameters.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested detail view.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Details"
        ],
        "summary": "Partially updates a detail view (name, description and type-specific settings).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Order Summary"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "AI summary of the selected order."
                  }
                },
                "Update AI prompt": {
                  "value": {
                    "AiPrompt": "Summarize this order in two sentences."
                  }
                },
                "Reconnect AI model": {
                  "value": {
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Change AI tone": {
                  "value": {
                    "AiToneModifierId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                },
                "Update embed URL": {
                  "value": {
                    "Url": "https://example.com/customers/{CustomerId}"
                  }
                },
                "Change list size": {
                  "value": {
                    "MaxRecords": 50
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Order Summary"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "AI summary of the selected order."
                  }
                },
                "Update AI prompt": {
                  "value": {
                    "AiPrompt": "Summarize this order in two sentences."
                  }
                },
                "Reconnect AI model": {
                  "value": {
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Change AI tone": {
                  "value": {
                    "AiToneModifierId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                },
                "Update embed URL": {
                  "value": {
                    "Url": "https://example.com/customers/{CustomerId}"
                  }
                },
                "Change list size": {
                  "value": {
                    "MaxRecords": 50
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Order Summary"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "AI summary of the selected order."
                  }
                },
                "Update AI prompt": {
                  "value": {
                    "AiPrompt": "Summarize this order in two sentences."
                  }
                },
                "Reconnect AI model": {
                  "value": {
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Change AI tone": {
                  "value": {
                    "AiToneModifierId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                },
                "Update embed URL": {
                  "value": {
                    "Url": "https://example.com/customers/{CustomerId}"
                  }
                },
                "Change list size": {
                  "value": {
                    "MaxRecords": 50
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The detail view was updated."
          },
          "400": {
            "description": "A supplied value is invalid or too long, or a referenced AI connector/model/tone is invalid."
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Details"
        ],
        "summary": "Deletes a detail view and its dependent data.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view was deleted."
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/field": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of fields for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/item": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of items for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/filter": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of filters for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's filters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailFilterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/parameter": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of parameters for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/variable": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of variables for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's variables.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/access": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Lists the users and teams that have access to a detail view.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's access list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAccessResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/ai-attachments": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of AI attachments for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's AI attachments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/ai-data-sources": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of AI data sources for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's AI data sources.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiDataSourceResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/ai-favorites": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of AI favorites for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's AI favorites.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiFavoriteResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail/{id}/ai-tool": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a list of AI tools for an entity detail",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity detail's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The detail view's AI tools.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailAiToolResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail": {
      "post": {
        "tags": [
          "Details"
        ],
        "summary": "Creates a detail (drill-down) view on an entity.",
        "description": "Required fields and validation vary by detail type (list, singleton, summary, image, file, iframe, AI prompt, AI chat, etc.); for example AI prompt details require an AI connector and model, and iframe details require a URL.\r\n            Items, fields, filters (with inline values), variables and AI tools can be created alongside the detail in the same request; the first invalid child fails the request.",
        "requestBody": {
          "description": "The detail view to create. EntityId, Name and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailRequest"
              },
              "examples": {
                "Related list": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "List",
                    "Name": "Related Orders",
                    "Description": "Orders linked to the selected record.",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                    "MaxRecords": 100
                  }
                },
                "Singleton": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Singleton",
                    "Name": "Primary Contact",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "Summary": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Summary",
                    "Name": "Sales Summary",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "Shipping": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Shipping",
                    "Name": "Shipment Tracking"
                  }
                },
                "iFrame / embedded URL": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "IFrame",
                    "Name": "Customer Website",
                    "Url": "https://example.com/customers/{CustomerId}"
                  }
                },
                "Group": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Group",
                    "Name": "Related Information"
                  }
                },
                "Image": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Image",
                    "Name": "Product Image",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                    "ImageFieldId": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
                  }
                },
                "AI prompt (fixed)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiPrompt",
                    "Name": "Summarize Order",
                    "Description": "AI summary of the selected order.",
                    "AiPrompt": "Summarize this order, highlighting total value and any overdue items.",
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "AiToneModifierId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                    "AiPromptType": "Fixed",
                    "AiAllowConversation": true,
                    "AiShowInitialPrompt": true
                  }
                },
                "AI prompt (user)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiPrompt",
                    "Name": "Ask about this Order",
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "AiPromptType": "User",
                    "AiAllowToneChanges": false
                  }
                },
                "File": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "File",
                    "Name": "Attached Documents",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "AI chat": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiChat",
                    "Name": "Chat about this Record"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailRequest"
              },
              "examples": {
                "Related list": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "List",
                    "Name": "Related Orders",
                    "Description": "Orders linked to the selected record.",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                    "MaxRecords": 100
                  }
                },
                "Singleton": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Singleton",
                    "Name": "Primary Contact",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "Summary": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Summary",
                    "Name": "Sales Summary",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "Shipping": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Shipping",
                    "Name": "Shipment Tracking"
                  }
                },
                "iFrame / embedded URL": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "IFrame",
                    "Name": "Customer Website",
                    "Url": "https://example.com/customers/{CustomerId}"
                  }
                },
                "Group": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Group",
                    "Name": "Related Information"
                  }
                },
                "Image": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Image",
                    "Name": "Product Image",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                    "ImageFieldId": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
                  }
                },
                "AI prompt (fixed)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiPrompt",
                    "Name": "Summarize Order",
                    "Description": "AI summary of the selected order.",
                    "AiPrompt": "Summarize this order, highlighting total value and any overdue items.",
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "AiToneModifierId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                    "AiPromptType": "Fixed",
                    "AiAllowConversation": true,
                    "AiShowInitialPrompt": true
                  }
                },
                "AI prompt (user)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiPrompt",
                    "Name": "Ask about this Order",
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "AiPromptType": "User",
                    "AiAllowToneChanges": false
                  }
                },
                "File": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "File",
                    "Name": "Attached Documents",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "AI chat": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiChat",
                    "Name": "Chat about this Record"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailRequest"
              },
              "examples": {
                "Related list": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "List",
                    "Name": "Related Orders",
                    "Description": "Orders linked to the selected record.",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                    "MaxRecords": 100
                  }
                },
                "Singleton": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Singleton",
                    "Name": "Primary Contact",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "Summary": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Summary",
                    "Name": "Sales Summary",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "Shipping": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Shipping",
                    "Name": "Shipment Tracking"
                  }
                },
                "iFrame / embedded URL": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "IFrame",
                    "Name": "Customer Website",
                    "Url": "https://example.com/customers/{CustomerId}"
                  }
                },
                "Group": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Group",
                    "Name": "Related Information"
                  }
                },
                "Image": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "Image",
                    "Name": "Product Image",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                    "ImageFieldId": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
                  }
                },
                "AI prompt (fixed)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiPrompt",
                    "Name": "Summarize Order",
                    "Description": "AI summary of the selected order.",
                    "AiPrompt": "Summarize this order, highlighting total value and any overdue items.",
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "AiToneModifierId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                    "AiPromptType": "Fixed",
                    "AiAllowConversation": true,
                    "AiShowInitialPrompt": true
                  }
                },
                "AI prompt (user)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiPrompt",
                    "Name": "Ask about this Order",
                    "AiConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "AiModelId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "AiPromptType": "User",
                    "AiAllowToneChanges": false
                  }
                },
                "File": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "File",
                    "Name": "Attached Documents",
                    "DetailEntityId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                  }
                },
                "AI chat": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Type": "AiChat",
                    "Name": "Chat about this Record"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created detail view.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is invalid, a referenced entity/connector/field is invalid, or a nested child is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-field/{id}": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Get a single entity detail field",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Details"
        ],
        "summary": "Update a entity detail field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Details"
        ],
        "summary": "Delete a entity detail field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-field": {
      "post": {
        "tags": [
          "Details"
        ],
        "summary": "Add a new entity detail field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityDetailFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-filter/{id}": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Gets a detail view filter by id, with its values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail filter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested detail filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailFilterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail filter exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Details"
        ],
        "summary": "Partially updates a detail view filter (field and type).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail filter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailFilterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The filter was updated."
          },
          "404": {
            "description": "No filter exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-filter": {
      "post": {
        "tags": [
          "Details"
        ],
        "summary": "Adds a filter to a detail view.",
        "requestBody": {
          "description": "The filter to create. EntityDetailId, EntityFieldId and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailFilterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The detail does not exist, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-item/{id}": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Gets a detail view item by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested detail item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail item exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Details"
        ],
        "summary": "Partially updates a detail view item.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The detail item was updated."
          },
          "404": {
            "description": "No detail item exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-item": {
      "post": {
        "tags": [
          "Details"
        ],
        "summary": "Adds an item to a detail view.",
        "requestBody": {
          "description": "The item to create. EntityDetailId and DetailItemId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created detail item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The detail does not exist, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-variable/{id}": {
      "get": {
        "tags": [
          "Details"
        ],
        "summary": "Gets a detail view variable by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested detail variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No detail variable exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Details"
        ],
        "summary": "Partially updates a detail view variable binding.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The detail variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityDetailVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The detail variable was updated."
          },
          "404": {
            "description": "No detail variable exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-detail-variable": {
      "post": {
        "tags": [
          "Details"
        ],
        "summary": "Adds a variable binding to a detail view.",
        "requestBody": {
          "description": "The variable binding to create. EntityDetailId, EntityVariableId and ValueType are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityDetailVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created detail variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDetailVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The detail does not exist, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Get a list of endpoints",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's endpoints.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSimpleEndpointResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Creates a published endpoint, along with its parameters, fields, sorts and no-data response.",
        "requestBody": {
          "description": "The endpoint to create. Url, Name and EntityId are required; child collections are validated up front.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing or invalid, the name/URL is too long or in use, or a referenced resource is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint/{id}": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Gets an endpoint by id, including its entity, connector, favorite, company, parameters, fields, sorts and no-data response.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Partially updates an endpoint's settings (URL, name, description, favorite, company, format, locale and record options).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated endpoint.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied value is invalid or too long, or a referenced favorite/company is invalid."
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Deletes an endpoint and its dependent data.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint was deleted."
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint/{id}/parameter": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Get a list of parameters for an endpoint",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEndpointParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint/{id}/field": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Get a list of fields for an endpoint",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEndpointFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint/{id}/sort": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Get a list of sorts for an endpoint",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint's sort fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEndpointSortResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint/{id}/custom-response-header": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Get a list of custom response headers for an endpoint",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint's custom response headers.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEndpointCustomHeaderResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint/{id}/schema": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Gets the JSON schema describing the fields an endpoint returns.",
        "description": "Derived from the endpoint's favorite (if set), its configured fields, or the entity's default fields.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint's JSON schema.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointJsonSchemaResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint-field/{id}": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Gets an endpoint field by id, including its entity field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested endpoint field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No endpoint field exists with that id, or its endpoint belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Partially updates an endpoint field (name and entity field).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The endpoint field was updated."
          },
          "400": {
            "description": "The name is too long."
          },
          "404": {
            "description": "No endpoint field exists with that id, the entity field is invalid, or its endpoint belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Deletes an endpoint field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint field was deleted."
          },
          "404": {
            "description": "No endpoint field exists with that id, or its endpoint belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint-field": {
      "post": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Adds a field to an endpoint, appended after the existing fields.",
        "requestBody": {
          "description": "The field to create. EndpointId, EntityFieldId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created endpoint field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or the name is too long."
          },
          "404": {
            "description": "The endpoint or entity field does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint-parameter/{id}": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Gets an endpoint parameter by id, resolved with its field or variable.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its endpoint belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Partially updates an endpoint parameter (name and required flag).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The parameter was updated."
          },
          "400": {
            "description": "The name is too long."
          },
          "404": {
            "description": "No parameter exists with that id, or its endpoint belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Deletes an endpoint parameter.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter was deleted."
          },
          "404": {
            "description": "No parameter exists with that id, or its endpoint belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint-parameter": {
      "post": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Adds a parameter (bound to a field or a variable) to an endpoint.",
        "requestBody": {
          "description": "The parameter to create. EndpointId, Name and Type are required; field parameters need a FieldId and variable parameters need a VariableId.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is too long, or the referenced field/variable is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint-sort/{id}": {
      "get": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Gets an endpoint sort by id, including its entity field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested sort.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No sort exists with that id, or its endpoint belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Deletes an endpoint sort.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The sort was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No sort exists with that id, or its endpoint belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/endpoint-sort": {
      "post": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Adds a sort field to an endpoint.",
        "requestBody": {
          "description": "The sort to create. EndpointId and EntityFieldId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEndpointSortRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created sort.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The endpoint or entity field does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Endpoints"
        ],
        "summary": "Partially updates an endpoint sort (entity field and direction).",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The endpoint sort's unique identifier (GUID).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEndpointSortRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The sort was updated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EndpointSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No sort exists with that id, the entity field is invalid, or its endpoint belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-action/{id}": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a single entity action",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entities"
        ],
        "summary": "Update a entity action",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "EntityId",
                  "Location",
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "EntityId": {
                    "type": "string",
                    "description": "The entity this action belongs to. Required on create. Required when creating (POST).",
                    "format": "uuid",
                    "nullable": true
                  },
                  "Name": {
                    "type": "string",
                    "description": "The action's display name. Required on create. Required when creating (POST).",
                    "nullable": true
                  },
                  "Type": {
                    "type": "integer",
                    "description": "The action's task type. 1 = Open a website, 2 = Send an API request, 3 = Run a SmartConnect process, 4 = Trigger a Microsoft Flow, 5 = Connector action, 6 = Open a form, 7 = Multi-action, 8 = Document, 9 = Process SmartConnect errors, 10 = Run a workflow, 11 = Database action, 12 = Stored procedure. Required on create. Required when creating (POST).",
                    "format": "int32",
                    "nullable": true
                  },
                  "ActionId": {
                    "type": "string",
                    "description": "The underlying action this entity action runs, when applicable. Required when Type is 0.",
                    "format": "uuid",
                    "nullable": true
                  },
                  "Icon": {
                    "type": "string",
                    "description": "The icon shown for the action.",
                    "nullable": true
                  },
                  "Location": {
                    "type": "integer",
                    "description": "Where the action is shown. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required on create. Required when creating (POST).",
                    "format": "int32",
                    "nullable": true
                  },
                  "OpenWebsiteLocation": {
                    "type": "integer",
                    "description": "Where an opened website is displayed, using the same location codes. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required when the action opens a website. Required when Type is 1.",
                    "format": "int32",
                    "nullable": true
                  },
                  "Endpoint": {
                    "type": "string",
                    "description": "The endpoint URL the action calls. Required when the action opens a website. Required when Type is 1.",
                    "nullable": true
                  },
                  "RefreshAfter": {
                    "type": "boolean",
                    "description": "Whether the list is refreshed after the action runs.",
                    "nullable": true
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an entity action."
              }
            },
            "text/json": {
              "schema": {
                "required": [
                  "EntityId",
                  "Location",
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "EntityId": {
                    "type": "string",
                    "description": "The entity this action belongs to. Required on create. Required when creating (POST).",
                    "format": "uuid",
                    "nullable": true
                  },
                  "Name": {
                    "type": "string",
                    "description": "The action's display name. Required on create. Required when creating (POST).",
                    "nullable": true
                  },
                  "Type": {
                    "type": "integer",
                    "description": "The action's task type. 1 = Open a website, 2 = Send an API request, 3 = Run a SmartConnect process, 4 = Trigger a Microsoft Flow, 5 = Connector action, 6 = Open a form, 7 = Multi-action, 8 = Document, 9 = Process SmartConnect errors, 10 = Run a workflow, 11 = Database action, 12 = Stored procedure. Required on create. Required when creating (POST).",
                    "format": "int32",
                    "nullable": true
                  },
                  "ActionId": {
                    "type": "string",
                    "description": "The underlying action this entity action runs, when applicable. Required when Type is 0.",
                    "format": "uuid",
                    "nullable": true
                  },
                  "Icon": {
                    "type": "string",
                    "description": "The icon shown for the action.",
                    "nullable": true
                  },
                  "Location": {
                    "type": "integer",
                    "description": "Where the action is shown. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required on create. Required when creating (POST).",
                    "format": "int32",
                    "nullable": true
                  },
                  "OpenWebsiteLocation": {
                    "type": "integer",
                    "description": "Where an opened website is displayed, using the same location codes. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required when the action opens a website. Required when Type is 1.",
                    "format": "int32",
                    "nullable": true
                  },
                  "Endpoint": {
                    "type": "string",
                    "description": "The endpoint URL the action calls. Required when the action opens a website. Required when Type is 1.",
                    "nullable": true
                  },
                  "RefreshAfter": {
                    "type": "boolean",
                    "description": "Whether the list is refreshed after the action runs.",
                    "nullable": true
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an entity action."
              }
            },
            "application/*+json": {
              "schema": {
                "required": [
                  "EntityId",
                  "Location",
                  "Name",
                  "Type"
                ],
                "type": "object",
                "properties": {
                  "EntityId": {
                    "type": "string",
                    "description": "The entity this action belongs to. Required on create. Required when creating (POST).",
                    "format": "uuid",
                    "nullable": true
                  },
                  "Name": {
                    "type": "string",
                    "description": "The action's display name. Required on create. Required when creating (POST).",
                    "nullable": true
                  },
                  "Type": {
                    "type": "integer",
                    "description": "The action's task type. 1 = Open a website, 2 = Send an API request, 3 = Run a SmartConnect process, 4 = Trigger a Microsoft Flow, 5 = Connector action, 6 = Open a form, 7 = Multi-action, 8 = Document, 9 = Process SmartConnect errors, 10 = Run a workflow, 11 = Database action, 12 = Stored procedure. Required on create. Required when creating (POST).",
                    "format": "int32",
                    "nullable": true
                  },
                  "ActionId": {
                    "type": "string",
                    "description": "The underlying action this entity action runs, when applicable. Required when Type is 0.",
                    "format": "uuid",
                    "nullable": true
                  },
                  "Icon": {
                    "type": "string",
                    "description": "The icon shown for the action.",
                    "nullable": true
                  },
                  "Location": {
                    "type": "integer",
                    "description": "Where the action is shown. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required on create. Required when creating (POST).",
                    "format": "int32",
                    "nullable": true
                  },
                  "OpenWebsiteLocation": {
                    "type": "integer",
                    "description": "Where an opened website is displayed, using the same location codes. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required when the action opens a website. Required when Type is 1.",
                    "format": "int32",
                    "nullable": true
                  },
                  "Endpoint": {
                    "type": "string",
                    "description": "The endpoint URL the action calls. Required when the action opens a website. Required when Type is 1.",
                    "nullable": true
                  },
                  "RefreshAfter": {
                    "type": "boolean",
                    "description": "Whether the list is refreshed after the action runs.",
                    "nullable": true
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an entity action."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entities"
        ],
        "summary": "Delete a entity action",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-action": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Add a new entity action",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityActionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of entities",
        "description": "All filters are optional and combine with AND.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "connectorId",
            "in": "query",
            "description": "Only return entities belonging to this connector id.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "isCustom",
            "in": "query",
            "description": "Filter to custom entities (true) or standard entities (false).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "customEntityType",
            "in": "query",
            "description": "Only return custom entities of this type — a number (1-7) or a name (summary, joined, merged, comparison, restriction, matrix, aiprompt).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "isQueryBuilder",
            "in": "query",
            "description": "Filter to query builder entities (true) or non-query-builder entities (false).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entities available to the authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityResponseModel"
                }
              }
            }
          },
          "400": {
            "description": "A supplied filter value was malformed."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates one or more standard entities and grants the caller access to each.",
        "requestBody": {
          "description": "The entities to create. Each requires ConnectorId and Name.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostEntityRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostEntityRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostEntityRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created entities.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SimpleEntityResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or no records were supplied."
          },
          "401": {
            "description": "The caller is not authorized to add an entity to one of the connectors."
          },
          "500": {
            "description": "An error occurred while saving the entities."
          }
        }
      }
    },
    "/api/v3/entity/{id}": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Gets a single entity by id, with its type-specific detail.",
        "description": "For custom entities (summary, comparison, joined, merged) returns the relevant configuration and links; for standard entities returns the underlying tables and their joins.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseModel"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entities"
        ],
        "summary": "Partially updates an entity's name, item names and entity group.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales Orders"
                  }
                },
                "Update item labels": {
                  "value": {
                    "ItemName": "Orders",
                    "ItemSingular": "Order"
                  }
                },
                "Move to group": {
                  "value": {
                    "EntityGroupId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales Orders"
                  }
                },
                "Update item labels": {
                  "value": {
                    "ItemName": "Orders",
                    "ItemSingular": "Order"
                  }
                },
                "Move to group": {
                  "value": {
                    "EntityGroupId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales Orders"
                  }
                },
                "Update item labels": {
                  "value": {
                    "ItemName": "Orders",
                    "ItemSingular": "Order"
                  }
                },
                "Move to group": {
                  "value": {
                    "EntityGroupId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The entity was updated."
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entities"
        ],
        "summary": "Deletes an entity and its dependent data.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity was deleted."
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/field": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of fields for an entity",
        "description": "All filters are optional and combine with AND.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fieldType",
            "in": "query",
            "description": "Only return fields of this data type (e.g. String, Currency, Date). Legacy integer ids are also accepted.",
            "schema": {
              "enum": [
                "String",
                "Date",
                "Currency",
                "Integer",
                "Phone",
                "Enum",
                "Percentage",
                "YesNo",
                "Time",
                "Quantity",
                "Email",
                "Url",
                "Image",
                "Color",
                "Text",
                "Guid",
                "Icon",
                "TimeSpan",
                "File",
                "Dimension"
              ],
              "type": "string",
              "x-enumDescriptions": {
                "String": "String",
                "Date": "Date",
                "Currency": "Currency",
                "Integer": "Number",
                "Phone": "Phone",
                "Enum": "List",
                "Percentage": "Percentage",
                "YesNo": "Yes/No",
                "Time": "Time",
                "Quantity": "Quantity",
                "Email": "Email",
                "Url": "Website",
                "Image": "Image",
                "Color": "Color",
                "Text": "Text",
                "Guid": "GUID",
                "Icon": "Icon",
                "TimeSpan": "Duration / time span",
                "File": "File",
                "Dimension": "Dimension"
              }
            }
          },
          {
            "name": "isCalculated",
            "in": "query",
            "description": "Filter to calculated fields (true) or non-calculated fields (false).",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied filter value was malformed."
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/default-field": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of default fields for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's default fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/merge-field": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of merge fields for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's merge fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMergeFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/compare-field": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of compare fields for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's compare fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfCustomEntityCompareFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/join-field": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of join fields for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's join fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfCustomEntityJoinFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/join-link": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of join links for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's join links.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfCustomEntityJoinLinkResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/variable": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of variables for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's variables.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/restriction": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of restrictions for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/favorite": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of favorites for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's favorites visible to the caller.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/detail": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of details for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's accessible detail views.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/color-coding": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of color-coding rules for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's color-coding configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityColorCodingResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/ai-attachment": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Get a list of AI attachments for an entity",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's AI prompt attachments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/access": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Lists the users and teams that have access to an entity.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity's access list.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceAccessResponse"
                }
              }
            }
          },
          "404": {
            "description": "No entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/{id}/data": {
      "get": {
        "tags": [
          "Entities"
        ],
        "summary": "Runs a query against an entity and returns its data.",
        "description": "Queries the entity's default fields, honoring `company`/`company-id`, `max-records`, `format` and any entity variables supplied as query-string parameters. Requires the connector's query-data permission.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The query results in the requested format."
          },
          "204": {
            "description": "The query succeeded but returned no content."
          },
          "400": {
            "description": "The query could not be executed."
          },
          "401": {
            "description": "The caller is not authorized to query this entity or connector."
          },
          "404": {
            "description": "No entity exists with that id."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/summary": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a summary entity that aggregates a base entity.",
        "description": "Adds the configured group field and summary fields (or a count field) for the chosen summary method.",
        "requestBody": {
          "description": "The summary entity definition. ConnectorId, Name, SummaryMethod and BaseEntityId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSummaryEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSummaryEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostSummaryEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created summary entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SummaryEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is invalid, or the name is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/join": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a joined entity that combines multiple entities.",
        "requestBody": {
          "description": "The joined entity definition. ConnectorId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostJoinEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostJoinEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostJoinEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created joined entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JoinEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is too long, or it is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/comparison": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a comparison entity that compares two entities.",
        "requestBody": {
          "description": "The comparison entity definition (from/to entities, companies and comparison method). ConnectorId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostComparisonEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostComparisonEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostComparisonEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created comparison entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ComparisonEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is too long, or it is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/merge": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a merged entity that combines records from multiple entities.",
        "requestBody": {
          "description": "The merged entity definition. ConnectorId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMergeEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMergeEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMergeEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created merged entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MergeEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is too long, or it is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/matrix": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a matrix entity from a base entity, generating its columns and rows.",
        "description": "Generates one filtered column per distinct value or date bucket of the column field (with an optional summary column), a dynamic row keyed off the row field (with an optional total row), and disables sorting, filtering, grouping and totals on the grid.",
        "requestBody": {
          "description": "The matrix entity definition (column/row fields, summary field and method, date granularity, date range and summary toggles). ConnectorId, Name and BaseEntityId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMatrixEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMatrixEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMatrixEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created matrix entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MatrixEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is too long, or it is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/ai-prompt": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates an AI prompt entity and its attachments.",
        "requestBody": {
          "description": "The AI prompt entity definition (AI connector, model, tone modifier, prompt and attachments). ConnectorId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created AI prompt entity, including its attachments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is invalid, or the name is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/rest": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a REST entity and its request settings on a REST connector.",
        "requestBody": {
          "description": "The REST entity definition (endpoint, request method, body, parent entity and behavior flags). ConnectorId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRestEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostRestEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostRestEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created REST entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing or invalid, the name is already in use, or the parent entity is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity/query-builder": {
      "post": {
        "tags": [
          "Entities"
        ],
        "summary": "Creates a query-builder entity, assigning it the next query-list resource id on its connector.",
        "requestBody": {
          "description": "The query-builder entity definition (API endpoint, file format and optional first resource id). ConnectorId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostQueryBuilderEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostQueryBuilderEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostQueryBuilderEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created query-builder entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QueryBuilderEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing or invalid, or the name is already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-company/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a single entity AI prompt attachment company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment company's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No attachment company exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Update a entity AI prompt attachment company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Delete a entity AI prompt attachment company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-company": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Add a new entity AI prompt attachment company",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Gets an AI prompt attachment by id, including its connector and entity.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Partially updates an AI prompt attachment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityAiPromptAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityAiPromptAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityAiPromptAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The attachment was updated."
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Deletes an AI prompt attachment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment was deleted."
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment/{id}/company": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of companies for an entity AI prompt attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's companies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentCompanyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment/{id}/field": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of fields for an entity AI prompt attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment/{id}/sort": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of sorts for an entity AI prompt attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's sort fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentSortResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment/{id}/variable": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of variables for an entity AI prompt attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's variables.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment/{id}/restriction": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of restrictions for an entity AI prompt attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The AI prompt attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Adds an AI prompt attachment to an AI prompt entity.",
        "requestBody": {
          "description": "The attachment to create. CustomEntityId, Name and AttachmentType are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created attachment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or the name is too long."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-field/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a single entity AI prompt attachment field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No attachment field exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Update a entity AI prompt attachment field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Delete a entity AI prompt attachment field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-field": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Add a new entity AI prompt attachment field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction-apply/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a single entity AI prompt attachment restriction apply",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionApplyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Update a entity AI prompt attachment restriction apply",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionApplyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionApplyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionApplyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Delete a entity AI prompt attachment restriction apply",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction-apply": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Add a new entity AI prompt attachment restriction apply",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionApplyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionApplyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionApplyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a single entity AI prompt attachment restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction exists with that id, or the caller cannot access its attachment."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Update a entity AI prompt attachment restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityAiPromptAttachmentRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityAiPromptAttachmentRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityAiPromptAttachmentRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Delete a entity AI prompt attachment restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction/{id}/value": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of values for an entity AI prompt attachment restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction exists with that id, or the caller cannot access its attachment."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction/{id}/apply": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a list of apply rules for an entity AI prompt attachment restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's apply rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfAiPromptEntityAttachmentRestrictionApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction exists with that id, or the caller cannot access its attachment."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Add a new entity AI prompt attachment restriction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityAiPromptAttachmentRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityAiPromptAttachmentRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityAiPromptAttachmentRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction-value/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a single entity AI prompt attachment restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction value exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Update a entity AI prompt attachment restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Delete a entity AI prompt attachment restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-restriction-value": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Add a new entity AI prompt attachment restriction value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-sort/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Gets an AI prompt attachment sort by id, including its field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested sort.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentSortResponse"
                }
              }
            }
          },
          "404": {
            "description": "No sort exists with that id, or the caller cannot access its attachment."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Adds a sort field to an AI prompt attachment, appended after the existing sorts.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment sort route id (the attachment is identified by the request body).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The sort to create. CustomEntityAiPromptAttachmentId and EntityFieldId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityAttachmentSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityAttachmentSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostAiPromptEntityAttachmentSortRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created sort.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The attachment or field does not exist, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Partially updates an AI prompt attachment sort (its direction).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAiPromptEntityAttachmentSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAiPromptEntityAttachmentSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchAiPromptEntityAttachmentSortRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The sort was updated."
          },
          "404": {
            "description": "No sort exists with that id, or the caller cannot access its attachment."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Deletes an AI prompt attachment sort.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The sort was deleted."
          },
          "404": {
            "description": "No sort exists with that id, or the caller cannot access its attachment."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-variable/{id}": {
      "get": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Get a single entity AI prompt attachment variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No attachment variable exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Update a entity AI prompt attachment variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Delete a entity AI prompt attachment variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-ai-prompt-attachment-variable": {
      "post": {
        "tags": [
          "Entity AI settings"
        ],
        "summary": "Add a new entity AI prompt attachment variable",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteAiPromptEntityAttachmentVariableRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AiPromptEntityAttachmentVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-rest-optimization/{id}": {
      "get": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Gets a REST entity optimization by id, including its field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The REST optimization's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested optimization.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityRestOptimizationResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No optimization exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Partially updates a REST entity optimization (field, type, key and operator).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The REST optimization's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityRestOptimizationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityRestOptimizationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityRestOptimizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The optimization was updated."
          },
          "400": {
            "description": "A supplied value is invalid or too long, or the referenced field is invalid."
          },
          "404": {
            "description": "No optimization exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Deletes a REST entity optimization.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The REST optimization's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The optimization was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No optimization exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-rest-optimization": {
      "post": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Creates a REST entity optimization that maps a field to a request key for server-side filtering.",
        "requestBody": {
          "description": "The optimization to create. EntityRestId, EntityFieldId, Type and Key are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityRestOptimizationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityRestOptimizationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityRestOptimizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created optimization.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityRestOptimizationResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long/invalid, or the entity/field is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-rest-parameter/{id}": {
      "get": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Get a single entity REST parameter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityRestParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Update a entity REST parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityRestParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityRestParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityRestParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityRestParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Delete a entity REST parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-rest-parameter": {
      "post": {
        "tags": [
          "Entity REST settings"
        ],
        "summary": "Add a new entity REST parameter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityRestParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityRestParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityRestParameterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityRestParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-column/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Gets a favorite column by id, including its field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested column.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteColumnResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No column exists with that id, or the caller cannot access its favorite."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Favorites"
        ],
        "summary": "Partially updates a favorite column (order, width, sort, group, summary, pivot and date format).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteColumnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteColumnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteColumnRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The column was updated."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No column exists with that id, or the caller cannot access its favorite."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Deletes a favorite column.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The column was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No column exists with that id, or the caller cannot access its favorite."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-column": {
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Adds a column to a favorite, appended after the existing columns.",
        "requestBody": {
          "description": "The column to create. FavoriteId and EntityFieldId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteColumnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteColumnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteColumnRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created column.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteColumnResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or the field is invalid."
          },
          "404": {
            "description": "The favorite or field does not exist, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of favorites",
        "description": "Each favorite includes HATEOAS links to its columns, restrictions, variables, sharing and tags.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "entityId",
            "in": "query",
            "description": "Only return favorites for this entity.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Only return favorites of this view type. Favorites support `List`, `Chart` and `Text` (or their integer codes `0`/`1`/`6`).",
            "schema": {
              "enum": [
                "List",
                "Chart",
                "Pivot",
                "Spreadsheet",
                "Board",
                "Calendar",
                "Text",
                "Map",
                "Image",
                "Card",
                "Summary",
                "IFrame",
                "Singleton",
                "Shipping",
                "Search",
                "ActionForm",
                "AiChat",
                "FilePreview",
                "Markdown"
              ],
              "type": "string",
              "x-enumDescriptions": {
                "List": "List",
                "Chart": "Chart",
                "Pivot": "Pivot",
                "Spreadsheet": "Spreadsheet",
                "Board": "Board",
                "Calendar": "Calendar",
                "Text": "Text",
                "Map": "Map",
                "Image": "Image",
                "Card": "Card",
                "Summary": "Summary",
                "IFrame": "iFrame",
                "Singleton": "Singleton",
                "Shipping": "Shipping",
                "Search": "Search",
                "ActionForm": "Action form",
                "AiChat": "AI chat",
                "FilePreview": "File preview",
                "Markdown": "Markdown"
              }
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorites available to the authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied filter value was malformed."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Creates a favorite (saved view) on an entity for the current user.",
        "requestBody": {
          "description": "The favorite to create (name, view type, max records and chart/text settings). EntityId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteRequest"
              },
              "examples": {
                "List view (minimal)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Open Sales Orders",
                    "MaxRecords": 500
                  }
                },
                "Chart view": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Revenue by Region",
                    "MaxRecords": 1000,
                    "ViewType": "Chart",
                    "ChartSettings": {
                      "Type": 0,
                      "ValueFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                      "CategoryFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "SummaryMethod": 1,
                      "MaxCategories": 10,
                      "ShowValueLabels": true,
                      "ShowLegend": true,
                      "SortBy": 3
                    }
                  }
                },
                "Text view (Markdown)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Order Summary",
                    "ViewType": "Text",
                    "TextSettings": {
                      "Format": 4,
                      "ShowHeaders": true,
                      "RemoveBlanks": true
                    }
                  }
                },
                "List view with columns, restrictions, variables, sharing & tags": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Open Orders by Customer",
                    "MaxRecords": 500,
                    "Columns": [
                      {
                        "EntityFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "SortNumber": 1
                      },
                      {
                        "EntityFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
                      }
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                        "Operator": "Equals",
                        "Values": [
                          {
                            "ValueType": "Constant",
                            "ConstantValue": "Open"
                          }
                        ]
                      }
                    ],
                    "Variables": [
                      {
                        "EntityVariableId": "0f8fad5b-d9cb-469f-a165-70867728950e",
                        "ValueType": "Constant",
                        "Value": "USA"
                      }
                    ],
                    "Sharing": [
                      {
                        "UserTeamId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                        "ShareType": "User"
                      }
                    ],
                    "Tags": [
                      {
                        "Value": "sales"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteRequest"
              },
              "examples": {
                "List view (minimal)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Open Sales Orders",
                    "MaxRecords": 500
                  }
                },
                "Chart view": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Revenue by Region",
                    "MaxRecords": 1000,
                    "ViewType": "Chart",
                    "ChartSettings": {
                      "Type": 0,
                      "ValueFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                      "CategoryFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "SummaryMethod": 1,
                      "MaxCategories": 10,
                      "ShowValueLabels": true,
                      "ShowLegend": true,
                      "SortBy": 3
                    }
                  }
                },
                "Text view (Markdown)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Order Summary",
                    "ViewType": "Text",
                    "TextSettings": {
                      "Format": 4,
                      "ShowHeaders": true,
                      "RemoveBlanks": true
                    }
                  }
                },
                "List view with columns, restrictions, variables, sharing & tags": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Open Orders by Customer",
                    "MaxRecords": 500,
                    "Columns": [
                      {
                        "EntityFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "SortNumber": 1
                      },
                      {
                        "EntityFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
                      }
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                        "Operator": "Equals",
                        "Values": [
                          {
                            "ValueType": "Constant",
                            "ConstantValue": "Open"
                          }
                        ]
                      }
                    ],
                    "Variables": [
                      {
                        "EntityVariableId": "0f8fad5b-d9cb-469f-a165-70867728950e",
                        "ValueType": "Constant",
                        "Value": "USA"
                      }
                    ],
                    "Sharing": [
                      {
                        "UserTeamId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                        "ShareType": "User"
                      }
                    ],
                    "Tags": [
                      {
                        "Value": "sales"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteRequest"
              },
              "examples": {
                "List view (minimal)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Open Sales Orders",
                    "MaxRecords": 500
                  }
                },
                "Chart view": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Revenue by Region",
                    "MaxRecords": 1000,
                    "ViewType": "Chart",
                    "ChartSettings": {
                      "Type": 0,
                      "ValueFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                      "CategoryFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "SummaryMethod": 1,
                      "MaxCategories": 10,
                      "ShowValueLabels": true,
                      "ShowLegend": true,
                      "SortBy": 3
                    }
                  }
                },
                "Text view (Markdown)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Order Summary",
                    "ViewType": "Text",
                    "TextSettings": {
                      "Format": 4,
                      "ShowHeaders": true,
                      "RemoveBlanks": true
                    }
                  }
                },
                "List view with columns, restrictions, variables, sharing & tags": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Open Orders by Customer",
                    "MaxRecords": 500,
                    "Columns": [
                      {
                        "EntityFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "SortNumber": 1
                      },
                      {
                        "EntityFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
                      }
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                        "Operator": "Equals",
                        "Values": [
                          {
                            "ValueType": "Constant",
                            "ConstantValue": "Open"
                          }
                        ]
                      }
                    ],
                    "Variables": [
                      {
                        "EntityVariableId": "0f8fad5b-d9cb-469f-a165-70867728950e",
                        "ValueType": "Constant",
                        "Value": "USA"
                      }
                    ],
                    "Sharing": [
                      {
                        "UserTeamId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                        "ShareType": "User"
                      }
                    ],
                    "Tags": [
                      {
                        "Value": "sales"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created favorite.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is out of range, or the view settings are invalid."
          },
          "404": {
            "description": "The entity does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Gets a favorite by id (or runs a published endpoint by its URL slug).",
        "description": "If the id matches a published endpoint URL, returns that endpoint's data; otherwise returns the favorite with its columns, restrictions, variables, sharing and tags.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID), or a published endpoint URL slug.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested favorite, or the endpoint's data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "The favorite id is missing or invalid."
          },
          "401": {
            "description": "The caller is not authorized to view this favorite or endpoint."
          },
          "404": {
            "description": "No favorite exists with that id."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Favorites"
        ],
        "summary": "Partially updates a favorite (name, max records, view type and chart/text settings).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Open Orders (2026)"
                  }
                },
                "Raise record cap": {
                  "value": {
                    "MaxRecords": 1000
                  }
                },
                "Switch to chart view": {
                  "value": {
                    "ViewType": "Chart",
                    "ChartSettings": {
                      "Type": 0,
                      "SortBy": 3
                    }
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Open Orders (2026)"
                  }
                },
                "Raise record cap": {
                  "value": {
                    "MaxRecords": 1000
                  }
                },
                "Switch to chart view": {
                  "value": {
                    "ViewType": "Chart",
                    "ChartSettings": {
                      "Type": 0,
                      "SortBy": 3
                    }
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Open Orders (2026)"
                  }
                },
                "Raise record cap": {
                  "value": {
                    "MaxRecords": 1000
                  }
                },
                "Switch to chart view": {
                  "value": {
                    "ViewType": "Chart",
                    "ChartSettings": {
                      "Type": 0,
                      "SortBy": 3
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The favorite was updated."
          },
          "400": {
            "description": "A supplied value is too long, out of range, or the view settings are invalid."
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Deletes a favorite and its dependent data.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite was deleted."
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}/column": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of columns for a favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite's columns.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteColumnResponse"
                }
              }
            }
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}/sharing": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of shares for a favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite's sharing entries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteSharingResponse"
                }
              }
            }
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}/restriction": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of restrictions for a favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}/variable": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of variables for a favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite's variables.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}/tag": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of tags for a favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite's tags.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteTagResponse"
                }
              }
            }
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite/{id}/data": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Runs a favorite's query and returns its data.",
        "description": "Honors `company`/`company-id`, `max-records`, `format` and the favorite's variables as query-string parameters. Requires the connector's query-data permission.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The query results in the requested format."
          },
          "204": {
            "description": "The query succeeded but returned no content."
          },
          "400": {
            "description": "The query could not be executed."
          },
          "401": {
            "description": "The caller is not authorized to query this connector."
          },
          "404": {
            "description": "No favorite exists with that id, or the caller cannot access its entity."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-restriction/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Gets a favorite restriction by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or the favorite is not owned by or shared with the caller."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Favorites"
        ],
        "summary": "Partially updates a favorite restriction.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The restriction was updated."
          },
          "404": {
            "description": "No restriction exists with that id, or the favorite is not owned by or shared with the caller."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Deletes a favorite restriction and its values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction was deleted."
          },
          "404": {
            "description": "No restriction exists with that id."
          },
          "500": {
            "description": "An error occurred while deleting the restriction."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-restriction/{id}/value": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a list of values for a favorite restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFavoriteRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or the favorite is not owned by or shared with the caller."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-restriction": {
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Creates one or more restrictions on favorites the caller can access.",
        "requestBody": {
          "description": "The restrictions to create. Each requires a FavoriteId.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteRestrictionRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteRestrictionRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteRestrictionRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FavoriteRestrictionResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "No records were supplied, or a required field is missing."
          },
          "401": {
            "description": "The caller is not authorized to add a restriction to one of the favorites."
          },
          "500": {
            "description": "An error occurred while saving the restrictions."
          }
        }
      }
    },
    "/api/v3/favorite-restriction-value/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Gets a favorite restriction value by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction value exists with that id, or the favorite is not owned by or shared with the caller."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Favorites"
        ],
        "summary": "Partially updates a favorite restriction value.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchFavoriteRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The restriction value was updated."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No restriction value exists with that id, or the caller cannot access its favorite."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Deletes a favorite restriction value.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction value was deleted."
          },
          "404": {
            "description": "No restriction value exists with that id, or the favorite is not owned by or shared with the caller."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-restriction-value": {
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Creates one or more values on favorite restrictions the caller can access.",
        "requestBody": {
          "description": "The restriction values to create. Each requires a RestrictionId.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteRestrictionValueRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteRestrictionValueRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteRestrictionValueRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created restriction values.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FavoriteRestrictionValueResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "No records were supplied, or a required field is missing."
          },
          "404": {
            "description": "A referenced restriction does not exist, or the favorite is not owned by or shared with the caller."
          },
          "500": {
            "description": "An error occurred while saving the values."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-sharing/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Gets a favorite sharing entry by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite sharing entry's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested sharing entry.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteSharingResponse"
                }
              }
            }
          },
          "401": {
            "description": "The favorite is not owned by or shared with the caller."
          },
          "404": {
            "description": "No sharing entry exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Removes a favorite sharing entry (revokes a share).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite sharing entry's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The sharing entry was deleted."
          },
          "404": {
            "description": "No sharing entry exists with that id, or the favorite is not owned by or shared with the caller."
          },
          "500": {
            "description": "An error occurred while deleting the sharing entry."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-sharing": {
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Shares one or more favorites with users or teams.",
        "requestBody": {
          "description": "The sharing entries to create. Each requires a FavoriteId and a UserTeamId.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteSharingRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteSharingRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostFavoriteSharingRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created sharing entries.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FavoriteSharingResponse"
                  }
                }
              }
            }
          },
          "400": {
            "description": "No records were supplied, or a required field is missing."
          },
          "401": {
            "description": "The caller is not authorized to share one of the favorites."
          },
          "500": {
            "description": "An error occurred while saving the sharing entries."
          }
        }
      }
    },
    "/api/v3/favorite-tag/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Gets one of the current user's tags by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested tag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteTagResponse"
                }
              }
            }
          },
          "404": {
            "description": "No tag exists with that id, or it belongs to another user."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Deletes one of the current user's tags and removes it from all favorites.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tag was deleted."
          },
          "404": {
            "description": "No tag exists with that id, or it belongs to another user."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-tag": {
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Applies a tag to a favorite, creating the tag if the current user does not already have it.",
        "requestBody": {
          "description": "Identifies the favorite and the tag text. FavoriteId and Tag are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteTagRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteTagRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostFavoriteTagRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The tag applied to the favorite.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteTagResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The favorite does not exist, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-variable/{id}": {
      "get": {
        "tags": [
          "Favorites"
        ],
        "summary": "Get a single favorite variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested favorite variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No favorite variable exists with that id, or the caller cannot access its favorite."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Favorites"
        ],
        "summary": "Update a favorite variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFavoriteVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFavoriteVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFavoriteVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Favorites"
        ],
        "summary": "Delete a favorite variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/favorite-variable": {
      "post": {
        "tags": [
          "Favorites"
        ],
        "summary": "Add a new favorite variable",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFavoriteVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFavoriteVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFavoriteVariableRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FavoriteVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field/{id}": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get a single field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No field exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Fields"
        ],
        "summary": "Update a field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityFieldRequest"
              },
              "examples": {
                "Rename (display)": {
                  "value": {
                    "DisplayName": "Customer"
                  }
                },
                "Change data type": {
                  "value": {
                    "Type": "String"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityFieldRequest"
              },
              "examples": {
                "Rename (display)": {
                  "value": {
                    "DisplayName": "Customer"
                  }
                },
                "Change data type": {
                  "value": {
                    "Type": "String"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityFieldRequest"
              },
              "examples": {
                "Rename (display)": {
                  "value": {
                    "DisplayName": "Customer"
                  }
                },
                "Change data type": {
                  "value": {
                    "Type": "String"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The field was updated."
          },
          "400": {
            "description": "The id is invalid, or the display name is too long."
          },
          "404": {
            "description": "No field exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fields"
        ],
        "summary": "Delete a field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The field was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No field exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field/{id}/list-item": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get a list of list items for an entity field",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The field's list items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityFieldListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No field exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field/{id}/list-item-restriction": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get a list of list item restrictions for an entity field",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The field's list-item restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfListItemRestriction"
                }
              }
            }
          },
          "404": {
            "description": "No field exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field": {
      "post": {
        "tags": [
          "Fields"
        ],
        "summary": "Add a new field",
        "description": "Applies type-specific defaults (decimal places, summary method, time-span units) based on the field type.",
        "requestBody": {
          "description": "The field to create. EntityId, DisplayName and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldRequest"
              },
              "examples": {
                "Text field": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "CustomerName",
                    "Type": "String",
                    "DisplayName": "Customer Name",
                    "ReadOnly": true
                  }
                },
                "Numeric field": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "OrderTotal",
                    "Type": "Currency",
                    "DisplayName": "Order Total",
                    "DecimalPlaces": 2,
                    "SummaryMethod": "Sum"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldRequest"
              },
              "examples": {
                "Text field": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "CustomerName",
                    "Type": "String",
                    "DisplayName": "Customer Name",
                    "ReadOnly": true
                  }
                },
                "Numeric field": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "OrderTotal",
                    "Type": "Currency",
                    "DisplayName": "Order Total",
                    "DecimalPlaces": 2,
                    "SummaryMethod": "Sum"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldRequest"
              },
              "examples": {
                "Text field": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "CustomerName",
                    "Type": "String",
                    "DisplayName": "Customer Name",
                    "ReadOnly": true
                  }
                },
                "Numeric field": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "OrderTotal",
                    "Type": "Currency",
                    "DisplayName": "Order Total",
                    "DecimalPlaces": 2,
                    "SummaryMethod": "Sum"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long, or the entity is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field-default": {
      "post": {
        "tags": [
          "Fields"
        ],
        "summary": "Mark a field as a default field",
        "requestBody": {
          "description": "Identifies the entity and field. EntityId and EntityFieldId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldDefaultRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldDefaultRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldDefaultRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The field was added to the entity's default fields."
          },
          "400": {
            "description": "A required field is missing, the entity/field is invalid, or the field is already a default field."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field-default/{id}": {
      "delete": {
        "tags": [
          "Fields"
        ],
        "summary": "Removes an entity field from an entity's default (visible) fields.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The field was removed from the entity's default fields."
          },
          "400": {
            "description": "The connector belongs to another account, or the field is not a default field."
          },
          "404": {
            "description": "No field exists with that id."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field-key": {
      "post": {
        "tags": [
          "Fields"
        ],
        "summary": "Marks an entity field as a key field, assigning it the next key number.",
        "requestBody": {
          "description": "Identifies the entity and field. EntityId and EntityFieldId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldKeyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldKeyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityFieldKeyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The field was added to the entity's key fields."
          },
          "400": {
            "description": "A required field is missing, the entity/field is invalid, or the field is already a key field."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field-key/{id}": {
      "delete": {
        "tags": [
          "Fields"
        ],
        "summary": "Removes an entity field from an entity's key fields.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The field was removed from the entity's key fields."
          },
          "400": {
            "description": "The connector belongs to another account, or the field is not a key field."
          },
          "404": {
            "description": "No field exists with that id."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field-list-item/{id}": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Get a single entity field list item",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityFieldListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Fields"
        ],
        "summary": "Update a entity field list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityFieldListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityFieldListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityFieldListItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityFieldListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fields"
        ],
        "summary": "Delete a entity field list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-field-list-item": {
      "post": {
        "tags": [
          "Fields"
        ],
        "summary": "Add a new entity field list item",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityFieldListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityFieldListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityFieldListItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityFieldListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/date-value": {
      "get": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Get a list of date values",
        "description": "Fiscal-year and fiscal-period date values are included only when the account has at least one fiscal year defined.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The available relative date values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfDateValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/fiscal-period/{id}": {
      "get": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Get a single fiscal period",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalPeriodResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Update a fiscal period",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalPeriodRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalPeriodRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalPeriodRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalPeriodResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Delete a fiscal period",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/fiscal-period": {
      "post": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Add a new fiscal period",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalPeriodRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalPeriodRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalPeriodRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalPeriodResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/fiscal-year/{id}/period": {
      "get": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Get a list of periods for a fiscal year",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The fiscal year's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the fiscal year's periods.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFiscalPeriodResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/fiscal-year": {
      "get": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Get a list of fiscal years",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFiscalYearResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Add a new fiscal year",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalYearRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalYearRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalYearRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalYearResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/fiscal-year/{id}": {
      "get": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Get a single fiscal year",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalYearResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Update a fiscal year",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalYearRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalYearRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteFiscalYearRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalYearResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Fiscal years"
        ],
        "summary": "Delete a fiscal year",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-group/{id}/entity": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get a list of entities for an entity group",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity group's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entities in the group.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityResponseModel"
                }
              }
            }
          },
          "404": {
            "description": "No entity group exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-group/{id}": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get a single entity group",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityGroupResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Groups"
        ],
        "summary": "Update a entity group",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityGroupRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales & Marketing"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityGroupRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales & Marketing"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityGroupRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales & Marketing"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Groups"
        ],
        "summary": "Delete a entity group",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-group": {
      "post": {
        "tags": [
          "Groups"
        ],
        "summary": "Add a new entity group",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityGroupRequest"
              },
              "examples": {
                "Entity group": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Sales"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityGroupRequest"
              },
              "examples": {
                "Entity group": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Sales"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityGroupRequest"
              },
              "examples": {
                "Entity group": {
                  "value": {
                    "ConnectorId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Sales"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Get a list of lookups",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "entityId",
            "in": "query",
            "description": "Only return lookups for this entity.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "companyId",
            "in": "query",
            "description": "Only return lookups scoped to this company.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's lookups.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfLookupResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied filter value was malformed."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lookups"
        ],
        "summary": "Creates a lookup that maps an input field to an output field on an entity.",
        "requestBody": {
          "description": "The lookup to create. EntityId, InputFieldId, OutputFieldId and Name are required; input and output fields must differ.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLookupRequest"
              },
              "examples": {
                "Lookup": {
                  "value": {
                    "Name": "Customer Name by Id",
                    "Description": "Resolves a customer id to its display name.",
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "InputFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Company-scoped lookup": {
                  "value": {
                    "Name": "Item Description by SKU",
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "InputFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "CompanyId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLookupRequest"
              },
              "examples": {
                "Lookup": {
                  "value": {
                    "Name": "Customer Name by Id",
                    "Description": "Resolves a customer id to its display name.",
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "InputFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Company-scoped lookup": {
                  "value": {
                    "Name": "Item Description by SKU",
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "InputFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "CompanyId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostLookupRequest"
              },
              "examples": {
                "Lookup": {
                  "value": {
                    "Name": "Customer Name by Id",
                    "Description": "Resolves a customer id to its display name.",
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "InputFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Company-scoped lookup": {
                  "value": {
                    "Name": "Item Description by SKU",
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "InputFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "CompanyId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created lookup.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is in use, or a referenced entity/field/company is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup/{id}": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Gets a lookup by id, including its restrictions.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested lookup.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupResponse"
                }
              }
            }
          },
          "404": {
            "description": "No lookup exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Lookups"
        ],
        "summary": "Partially updates a lookup (name, input/output fields, company and description).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLookupRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Customer Display Name"
                  }
                },
                "Change output field": {
                  "value": {
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLookupRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Customer Display Name"
                  }
                },
                "Change output field": {
                  "value": {
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLookupRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Customer Display Name"
                  }
                },
                "Change output field": {
                  "value": {
                    "OutputFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The lookup was updated."
          },
          "400": {
            "description": "A supplied value is invalid, the name is in use, or input and output fields match."
          },
          "404": {
            "description": "No lookup exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lookups"
        ],
        "summary": "Deletes a lookup and its dependent data.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The lookup was deleted."
          },
          "404": {
            "description": "No lookup exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup/{id}/restriction": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Get a list of restrictions for a lookup",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The lookup's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfLookupRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No lookup exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup/{id}/variable": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Get a list of variables for a lookup",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The lookup's variables.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfLookupVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No lookup exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-restriction/{id}": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Gets a lookup restriction by id, including its values and fields.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its lookup belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Lookups"
        ],
        "summary": "Partially updates a lookup restriction (field and restriction type).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLookupRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLookupRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchLookupRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The restriction was updated."
          },
          "404": {
            "description": "No restriction exists with that id, or its lookup belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lookups"
        ],
        "summary": "Deletes a lookup restriction.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction was deleted."
          },
          "404": {
            "description": "No restriction exists with that id, or its lookup belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-restriction/{id}/value": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Get a list of values for a lookup restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfLookupRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its lookup belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-restriction": {
      "post": {
        "tags": [
          "Lookups"
        ],
        "summary": "Adds a restriction to a lookup.",
        "requestBody": {
          "description": "The restriction to create. LookupId, EntityFieldId and RestrictionType are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLookupRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostLookupRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostLookupRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "No lookup exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-restriction-value/{id}": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Get a single lookup restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction value exists with that id, or its lookup belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Lookups"
        ],
        "summary": "Update a lookup restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lookups"
        ],
        "summary": "Delete a lookup restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-restriction-value": {
      "post": {
        "tags": [
          "Lookups"
        ],
        "summary": "Add a new lookup restriction value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-variable/{id}": {
      "get": {
        "tags": [
          "Lookups"
        ],
        "summary": "Get a single lookup variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The lookup variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No variable exists with that id, or its lookup belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Lookups"
        ],
        "summary": "Update a lookup variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lookups"
        ],
        "summary": "Delete a lookup variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/lookup-variable": {
      "post": {
        "tags": [
          "Lookups"
        ],
        "summary": "Add a new lookup variable",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteLookupVariableRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Gets a matrix column by id, including its summary columns when it is a summary column.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested matrix column.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixColumnResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix column exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Partially updates a matrix column (name, summary method, field type or calculation script) and its backing field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMatrixColumnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMatrixColumnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMatrixColumnRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The matrix column was updated."
          },
          "400": {
            "description": "A supplied value is invalid for the column type (e.g. setting a script on a non-calculation column)."
          },
          "404": {
            "description": "No matrix column exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Deletes a matrix column and its backing field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The matrix column was deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixColumnResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix column exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column/{id}/filter": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a list of filters for an entity matrix column",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The matrix column's filters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix column exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column/{id}/summary": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a list of summary items for an entity matrix column",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix column's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The summary column's summary items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMatrixColumnSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix column exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Adds a column to a matrix entity (filter, calculation or summary) and its backing field.",
        "description": "Required fields vary by column type: filter columns need a base field; calculation columns need a script and field type; summary columns need a field type.",
        "requestBody": {
          "description": "The matrix column to create. EntityId, Name and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixColumnRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixColumnRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixColumnRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created matrix column.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixColumnResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is in use, or the entity is not a matrix list."
          },
          "404": {
            "description": "The entity does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-filter/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a single entity matrix column filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix filter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No filter exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Update a entity matrix column filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Delete a entity matrix column filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-filter/{id}/value": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a list of values for an entity matrix column filter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix filter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The filter's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No filter exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-filter": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Add a new entity matrix column filter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-filter-value/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a single entity matrix column filter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix filter value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested filter value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No filter value exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Update a entity matrix column filter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Delete a entity matrix column filter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-filter-value": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Add a new entity matrix column filter value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-summary/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Gets a matrix column summary item by id, including the name of the summarized column.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix summary item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested summary item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixColumnSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No summary item exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Removes a column from a matrix summary column's set of summarized columns.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix summary item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The summary item was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No summary item exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-column-summary": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Adds a column to the set of columns that a matrix summary column summarizes.",
        "requestBody": {
          "description": "Identifies the summary column and the column to include. Both ids are required and must differ.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixColumnSummaryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixColumnSummaryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixColumnSummaryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created summary item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixColumnSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the ids match, or the entity is not a matrix list."
          },
          "404": {
            "description": "The referenced column does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Gets a matrix row by id, including its summary rows when it is a summary row.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix row's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested matrix row.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixRowResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix row exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Partially updates a matrix row.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix row's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMatrixRowRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMatrixRowRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMatrixRowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The matrix row was updated."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix row exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Deletes a matrix row.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix row's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The matrix row was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix row exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row/{id}/filter": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a list of filters for an entity matrix row",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix row's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The matrix row's filters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix row exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row/{id}/summary": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a list of summary items for an entity matrix row",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix row's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The summary row's summary items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMatrixRowSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No matrix row exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Adds a row to a matrix entity (filter, calculation, summary or dynamic).",
        "description": "Required fields vary by row type: filter and dynamic rows need a base field; calculation rows need a script and field type; summary rows need a field type.",
        "requestBody": {
          "description": "The matrix row to create. EntityId, Name and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixRowRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixRowRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixRowRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created matrix row.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixRowResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is in use, or the entity is not a matrix list."
          },
          "404": {
            "description": "The entity does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-filter/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a single entity matrix row filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix filter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No filter exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Update a entity matrix row filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Delete a entity matrix row filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-filter/{id}/value": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a list of values for an entity matrix row filter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix filter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The filter's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No filter exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-filter": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Add a new entity matrix row filter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-filter-value/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a single entity matrix row filter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix filter value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested filter value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No filter value exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Update a entity matrix row filter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Delete a entity matrix row filter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-filter-value": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Add a new entity matrix row filter value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixFilterValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-summary/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Gets a matrix row summary item by id, including the name of the summarized row.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix summary item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested summary item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixRowSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No summary item exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Removes a row from a matrix summary row's set of summarized rows.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The matrix summary item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The summary item was deleted."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No summary item exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-row-summary": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Adds a row to the set of rows that a matrix summary row summarizes.",
        "requestBody": {
          "description": "Identifies the summary row and the row to include. Both ids are required and must differ.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixRowSummaryRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixRowSummaryRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMatrixRowSummaryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created summary item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixRowSummaryResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the ids match, or the entity is not a matrix list."
          },
          "404": {
            "description": "The referenced row does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-value/{id}": {
      "get": {
        "tags": [
          "Matrix"
        ],
        "summary": "Get a single entity matrix value",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Matrix"
        ],
        "summary": "Update a entity matrix value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Matrix"
        ],
        "summary": "Delete a entity matrix value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-matrix-value": {
      "post": {
        "tags": [
          "Matrix"
        ],
        "summary": "Add a new entity matrix value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMatrixValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMatrixValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge-company/{id}": {
      "get": {
        "tags": [
          "Merge"
        ],
        "summary": "Get a single entity merge company",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeCompanyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Merge"
        ],
        "summary": "Update a entity merge company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Merge"
        ],
        "summary": "Delete a entity merge company",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge-company": {
      "post": {
        "tags": [
          "Merge"
        ],
        "summary": "Add a new entity merge company",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeCompanyResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge/{id}": {
      "get": {
        "tags": [
          "Merge"
        ],
        "summary": "Gets a merged entity's member entity by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The merge entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested merge entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeResponse"
                }
              }
            }
          },
          "404": {
            "description": "No merge entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Merge"
        ],
        "summary": "Partially updates a merged entity's member entity (its alias).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The merge entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMergeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMergeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityMergeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The merge entity was updated."
          },
          "404": {
            "description": "No merge entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Merge"
        ],
        "summary": "Removes a member entity from a merged entity, along with its field and company mappings.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The merge entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The merge entity was deleted."
          },
          "404": {
            "description": "No merge entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge/{id}/field": {
      "get": {
        "tags": [
          "Merge"
        ],
        "summary": "Get a list of fields for an entity merge",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The merge entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The merge entity's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMergeFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No merge entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge/{id}/company": {
      "get": {
        "tags": [
          "Merge"
        ],
        "summary": "Get a list of companies for an entity merge",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The merge entity's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The merge entity's companies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityMergeCompanyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No merge entity exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge": {
      "post": {
        "tags": [
          "Merge"
        ],
        "summary": "Adds a member entity (and optionally its companies) to a merged entity.",
        "requestBody": {
          "description": "Identifies the merged entity and the entity to merge in. EntityId and MergeEntityId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMergeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMergeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityMergeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created merge entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The entity does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge-field/{id}": {
      "get": {
        "tags": [
          "Merge"
        ],
        "summary": "Get a single entity merge field",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Merge"
        ],
        "summary": "Update a entity merge field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Merge"
        ],
        "summary": "Delete a entity merge field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-merge-field": {
      "post": {
        "tags": [
          "Merge"
        ],
        "summary": "Add a new entity merge field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityMergeFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityMergeFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message/{id}": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Get a single MCP prompt message",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt message's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested message.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No message exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Messages"
        ],
        "summary": "Update a MCP prompt message",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptMessageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptMessageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptMessageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Messages"
        ],
        "summary": "Delete a MCP prompt message",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message/{id}/restriction": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Get a list of restrictions for an MCP prompt message",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt message's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The message's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No message exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message": {
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Add a new MCP prompt message",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptMessageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptMessageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptMessageRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message-restriction/{id}": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Gets an MCP prompt message restriction by id, including its parameter and values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Messages"
        ],
        "summary": "Partially updates an MCP prompt message restriction (parameter and restriction type).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptMessageRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptMessageRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptMessageRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The restriction was updated."
          },
          "400": {
            "description": "A referenced parameter is invalid."
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Messages"
        ],
        "summary": "Deletes an MCP prompt message restriction and its values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction was deleted."
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message-restriction/{id}/value": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Get a list of values for an MCP prompt message restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message-restriction": {
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Adds a restriction (bound to a prompt parameter) to an MCP prompt message, with optional values.",
        "requestBody": {
          "description": "The restriction to create. McpPromptMessageId, McpPromptParameterId and RestrictionType are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or a referenced parameter is invalid."
          },
          "404": {
            "description": "The message, prompt or server does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message-restriction-value/{id}": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Gets an MCP prompt message restriction value by id, including its parameter.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction value exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Messages"
        ],
        "summary": "Partially updates an MCP prompt message restriction value (value type, constant or parameter).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptMessageRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptMessageRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptMessageRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The restriction value was updated."
          },
          "400": {
            "description": "The value type is invalid, or the supplied value does not match the value type."
          },
          "404": {
            "description": "No restriction value exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Messages"
        ],
        "summary": "Deletes an MCP prompt message restriction value.",
        "description": "Only allowed for \"one of\" / \"not one of\" restriction types.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction value was deleted."
          },
          "400": {
            "description": "Values cannot be deleted for this restriction type."
          },
          "404": {
            "description": "No restriction value exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-message-restriction-value": {
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Adds a value (constant or parameter) to an MCP prompt message restriction.",
        "requestBody": {
          "description": "The value to create. McpPromptMessageRestrictionId and ValueType are required; constant values need a ConstantValue and parameter values need a McpPromptParameterId.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or a referenced parameter is invalid."
          },
          "404": {
            "description": "The restriction, prompt or server does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-parameter/{id}/validation": {
      "get": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Get a list of validations for an MCP prompt parameter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the parameter's validations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpPromptParameterValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-parameter/{id}": {
      "get": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Get a single MCP prompt parameter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Update a MCP prompt parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Delete a MCP prompt parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-parameter": {
      "post": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Add a new MCP prompt parameter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpPromptParameterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-parameter-validation/{id}": {
      "get": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Gets an MCP prompt parameter validation by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The validation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested validation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptParameterValidationResponse"
                }
              }
            }
          },
          "404": {
            "description": "No validation exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Partially updates an MCP prompt parameter validation (error message and type-specific bounds).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The validation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptParameterValidationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptParameterValidationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptParameterValidationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The validation was updated."
          },
          "404": {
            "description": "No validation exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Deletes an MCP prompt parameter validation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The validation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The validation was deleted."
          },
          "404": {
            "description": "No validation exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt-parameter-validation": {
      "post": {
        "tags": [
          "Prompt parameters"
        ],
        "summary": "Adds a validation rule to an MCP prompt parameter (max/min/exact length or regex).",
        "requestBody": {
          "description": "The validation to create. McpPromptParameterId, Type and ErrorMessage are required; type-specific bounds must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptParameterValidationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptParameterValidationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptParameterValidationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created validation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptParameterValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field for the validation type is missing."
          },
          "404": {
            "description": "The parameter, prompt or server does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt/{id}": {
      "get": {
        "tags": [
          "Prompts"
        ],
        "summary": "Gets an MCP prompt by id, including its messages and their restrictions.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested prompt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptResponse"
                }
              }
            }
          },
          "404": {
            "description": "No prompt exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Prompts"
        ],
        "summary": "Partially updates an MCP prompt (name, description and status).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "summarize_open_orders"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Summarizes a customer's open and overdue orders."
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "summarize_open_orders"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Summarizes a customer's open and overdue orders."
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpPromptRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "summarize_open_orders"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Summarizes a customer's open and overdue orders."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The prompt was updated."
          },
          "404": {
            "description": "No prompt exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Prompts"
        ],
        "summary": "Deletes an MCP prompt along with its messages, parameters and message restrictions.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt was deleted."
          },
          "404": {
            "description": "No prompt exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt/{id}/message": {
      "get": {
        "tags": [
          "Prompts"
        ],
        "summary": "Get a list of messages for an MCP prompt",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt's messages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpPromptMessageResponse"
                }
              }
            }
          },
          "404": {
            "description": "No prompt exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt/{id}/parameter": {
      "get": {
        "tags": [
          "Prompts"
        ],
        "summary": "Get a list of parameters for an MCP prompt",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpPromptParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No prompt exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-prompt": {
      "post": {
        "tags": [
          "Prompts"
        ],
        "summary": "Adds a prompt to an MCP server, optionally seeding it with an initial message.",
        "requestBody": {
          "description": "The prompt to create. Name and McpServerId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptRequest"
              },
              "examples": {
                "User prompt": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "summarize_orders",
                    "Description": "Summarizes a customer's open orders.",
                    "MessageRole": "User",
                    "Message": "Summarize the open orders for customer {customerName}."
                  }
                },
                "Prompt with parameters": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "summarize_orders",
                    "Description": "Summarizes a customer's open orders.",
                    "MessageRole": "User",
                    "Message": "Summarize the open orders for customer {customerName}.",
                    "Parameters": [
                      {
                        "Name": "customerName",
                        "Description": "The customer to summarize orders for.",
                        "Required": true,
                        "Validations": [
                          {
                            "Type": "MaxLength",
                            "ErrorMessage": "Customer name is too long.",
                            "MaxValue": 100
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptRequest"
              },
              "examples": {
                "User prompt": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "summarize_orders",
                    "Description": "Summarizes a customer's open orders.",
                    "MessageRole": "User",
                    "Message": "Summarize the open orders for customer {customerName}."
                  }
                },
                "Prompt with parameters": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "summarize_orders",
                    "Description": "Summarizes a customer's open orders.",
                    "MessageRole": "User",
                    "Message": "Summarize the open orders for customer {customerName}.",
                    "Parameters": [
                      {
                        "Name": "customerName",
                        "Description": "The customer to summarize orders for.",
                        "Required": true,
                        "Validations": [
                          {
                            "Type": "MaxLength",
                            "ErrorMessage": "Customer name is too long.",
                            "MaxValue": 100
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpPromptRequest"
              },
              "examples": {
                "User prompt": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "summarize_orders",
                    "Description": "Summarizes a customer's open orders.",
                    "MessageRole": "User",
                    "Message": "Summarize the open orders for customer {customerName}."
                  }
                },
                "Prompt with parameters": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "summarize_orders",
                    "Description": "Summarizes a customer's open orders.",
                    "MessageRole": "User",
                    "Message": "Summarize the open orders for customer {customerName}.",
                    "Parameters": [
                      {
                        "Name": "customerName",
                        "Description": "The customer to summarize orders for.",
                        "Required": true,
                        "Validations": [
                          {
                            "Type": "MaxLength",
                            "ErrorMessage": "Customer name is too long.",
                            "MaxValue": 100
                          }
                        ]
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created prompt.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpPromptResponse"
                }
              }
            }
          },
          "400": {
            "description": "Name is missing or too long, or McpServerId is missing."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of MCP prompts",
        "responses": {
          "200": {
            "description": "The account's MCP prompts."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/odata": {
      "get": {
        "tags": [
          "Query"
        ],
        "summary": "Returns the OData service document listing the account's endpoints as entity sets.",
        "responses": {
          "200": {
            "description": "The OData v4 service document."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/odata/$metadata": {
      "get": {
        "tags": [
          "Query"
        ],
        "summary": "Returns the OData $metadata document describing each endpoint's entity type and fields.",
        "responses": {
          "200": {
            "description": "The OData v4 EDMX metadata document."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/odata/{id}": {
      "get": {
        "tags": [
          "Query"
        ],
        "summary": "Runs an endpoint as an OData entity set and returns its data, honoring OData query options.",
        "description": "Supports `$filter`, `$select`, `$top` and `$orderby`, plus entity variables passed as query-string parameters.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The endpoint URL slug (entity set name).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The endpoint's data in OData JSON format."
          },
          "400": {
            "description": "No endpoint exists with that URL slug."
          },
          "403": {
            "description": "The caller does not have access to the endpoint."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/query": {
      "post": {
        "tags": [
          "Query"
        ],
        "summary": "Run a query",
        "description": "Accepts columns, companies, restrictions, sorts, variables and a max-record limit. Requires access to the entity and the connector's query-data permission.",
        "requestBody": {
          "description": "The query to run. EntityId is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RunQueryV3Request"
              },
              "examples": {
                "Select columns": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ]
                  }
                },
                "Filtered": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ],
                    "Restrictions": [
                      {
                        "Conjunctive": "And",
                        "FieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                        "Type": "Equal",
                        "Value": {
                          "Type": "Constant",
                          "Value": "Open"
                        }
                      }
                    ]
                  }
                },
                "Sorted and capped": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                    ],
                    "Sorts": [
                      {
                        "FieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "Direction": "Descending"
                      }
                    ],
                    "MaxRecords": 100
                  }
                },
                "Date range and company": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                    ],
                    "Companies": [
                      "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
                    ],
                    "Restrictions": [
                      {
                        "Conjunctive": "And",
                        "FieldId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                        "Type": "GreaterThanOrEqual",
                        "Value": {
                          "Type": "Constant",
                          "Value": "2026-01-01"
                        }
                      }
                    ],
                    "MaxRecords": 500
                  }
                },
                "With variables": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Variables": [
                      {
                        "VariableId": "b7e8f9a0-2222-3333-4444-555566667777",
                        "Type": "Constant",
                        "Value": "2026"
                      }
                    ]
                  }
                },
                "Multiple values (one-of, between)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                        "Type": "OneOf",
                        "Values": [
                          {
                            "Type": "Constant",
                            "Value": "Open"
                          },
                          {
                            "Type": "Constant",
                            "Value": "Pending"
                          }
                        ]
                      },
                      {
                        "Conjunctive": "And",
                        "FieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "Type": "Between",
                        "Values": [
                          {
                            "Type": "Constant",
                            "Value": "100"
                          },
                          {
                            "Type": "Constant",
                            "Value": "1000"
                          }
                        ]
                      }
                    ]
                  }
                },
                "Relative date filter": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                        "Type": "GreaterThanOrEqual",
                        "Value": {
                          "Type": "Date",
                          "Value": "StartOfMonth"
                        }
                      }
                    ]
                  }
                },
                "CSV output": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                    ],
                    "Format": 4
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RunQueryV3Request"
              },
              "examples": {
                "Select columns": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ]
                  }
                },
                "Filtered": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ],
                    "Restrictions": [
                      {
                        "Conjunctive": "And",
                        "FieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                        "Type": "Equal",
                        "Value": {
                          "Type": "Constant",
                          "Value": "Open"
                        }
                      }
                    ]
                  }
                },
                "Sorted and capped": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                    ],
                    "Sorts": [
                      {
                        "FieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "Direction": "Descending"
                      }
                    ],
                    "MaxRecords": 100
                  }
                },
                "Date range and company": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                    ],
                    "Companies": [
                      "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
                    ],
                    "Restrictions": [
                      {
                        "Conjunctive": "And",
                        "FieldId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                        "Type": "GreaterThanOrEqual",
                        "Value": {
                          "Type": "Constant",
                          "Value": "2026-01-01"
                        }
                      }
                    ],
                    "MaxRecords": 500
                  }
                },
                "With variables": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Variables": [
                      {
                        "VariableId": "b7e8f9a0-2222-3333-4444-555566667777",
                        "Type": "Constant",
                        "Value": "2026"
                      }
                    ]
                  }
                },
                "Multiple values (one-of, between)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                        "Type": "OneOf",
                        "Values": [
                          {
                            "Type": "Constant",
                            "Value": "Open"
                          },
                          {
                            "Type": "Constant",
                            "Value": "Pending"
                          }
                        ]
                      },
                      {
                        "Conjunctive": "And",
                        "FieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "Type": "Between",
                        "Values": [
                          {
                            "Type": "Constant",
                            "Value": "100"
                          },
                          {
                            "Type": "Constant",
                            "Value": "1000"
                          }
                        ]
                      }
                    ]
                  }
                },
                "Relative date filter": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                        "Type": "GreaterThanOrEqual",
                        "Value": {
                          "Type": "Date",
                          "Value": "StartOfMonth"
                        }
                      }
                    ]
                  }
                },
                "CSV output": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                    ],
                    "Format": 4
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RunQueryV3Request"
              },
              "examples": {
                "Select columns": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ]
                  }
                },
                "Filtered": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ],
                    "Restrictions": [
                      {
                        "Conjunctive": "And",
                        "FieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                        "Type": "Equal",
                        "Value": {
                          "Type": "Constant",
                          "Value": "Open"
                        }
                      }
                    ]
                  }
                },
                "Sorted and capped": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                    ],
                    "Sorts": [
                      {
                        "FieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "Direction": "Descending"
                      }
                    ],
                    "MaxRecords": 100
                  }
                },
                "Date range and company": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                    ],
                    "Companies": [
                      "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
                    ],
                    "Restrictions": [
                      {
                        "Conjunctive": "And",
                        "FieldId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                        "Type": "GreaterThanOrEqual",
                        "Value": {
                          "Type": "Constant",
                          "Value": "2026-01-01"
                        }
                      }
                    ],
                    "MaxRecords": 500
                  }
                },
                "With variables": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Variables": [
                      {
                        "VariableId": "b7e8f9a0-2222-3333-4444-555566667777",
                        "Type": "Constant",
                        "Value": "2026"
                      }
                    ]
                  }
                },
                "Multiple values (one-of, between)": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                        "Type": "OneOf",
                        "Values": [
                          {
                            "Type": "Constant",
                            "Value": "Open"
                          },
                          {
                            "Type": "Constant",
                            "Value": "Pending"
                          }
                        ]
                      },
                      {
                        "Conjunctive": "And",
                        "FieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                        "Type": "Between",
                        "Values": [
                          {
                            "Type": "Constant",
                            "Value": "100"
                          },
                          {
                            "Type": "Constant",
                            "Value": "1000"
                          }
                        ]
                      }
                    ]
                  }
                },
                "Relative date filter": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                      "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
                    ],
                    "Restrictions": [
                      {
                        "FieldId": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d",
                        "Type": "GreaterThanOrEqual",
                        "Value": {
                          "Type": "Date",
                          "Value": "StartOfMonth"
                        }
                      }
                    ]
                  }
                },
                "CSV output": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Columns": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                    ],
                    "Format": 4
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The query results (JSON, XML or CSV per the requested format)."
          },
          "400": {
            "description": "The request body is missing."
          },
          "401": {
            "description": "The caller is not authorized to query this entity or connector."
          },
          "404": {
            "description": "No entity exists with that id."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/redaction": {
      "get": {
        "tags": [
          "Redactions"
        ],
        "summary": "Get a list of redactions",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfRedactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Redactions"
        ],
        "summary": "Add a new redaction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteRedactionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteRedactionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteRedactionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/redaction/{id}": {
      "get": {
        "tags": [
          "Redactions"
        ],
        "summary": "Get a single redaction",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedactionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Redactions"
        ],
        "summary": "Update a redaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteRedactionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteRedactionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteRedactionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RedactionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Redactions"
        ],
        "summary": "Delete a redaction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/chat/message": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Sends a chat message to the browser extension's AI model and returns the full response.",
        "description": "Resolves the AI model (or the extension's first configured model), builds a system prompt from the extension settings and page context, optionally attaches MCP tools, and returns the assistant's reply as plain text.",
        "requestBody": {
          "description": "The chat request (message or prompt messages, AI model, page context and tools).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrowserExtensionChatRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BrowserExtensionChatRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BrowserExtensionChatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The assistant's reply as plain text."
          },
          "400": {
            "description": "No AI models are configured, or the requested model was not found."
          },
          "404": {
            "description": "No browser extension configuration was found for the account."
          },
          "500": {
            "description": "The AI connector returned an error."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/chat/stream": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Streams a chat response from the browser extension's AI model as server-sent events.",
        "description": "Like the chat/message endpoint, but emits incremental text deltas, tool-use and tool-result events over an SSE stream, executing MCP tools across up to five iterations.",
        "requestBody": {
          "description": "The chat request (message or prompt messages, AI model, page context and tools).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BrowserExtensionChatRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BrowserExtensionChatRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BrowserExtensionChatRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/config": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Gets the full browser extension configuration for a given extension type.",
        "description": "Returns the extension's URLs, pages (with fields and attachments), prompt groups, tools and models, resolved with their MCP prompt/tool and AI model details.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "The browser extension type to load the configuration for.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The browser extension configuration.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserExtensionConfigResponse"
                }
              }
            }
          },
          "404": {
            "description": "No browser extension configuration was found for that type."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/configs": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Gets the full configuration for every browser extension in the current account.",
        "description": "Returns the same detail as the single-config endpoint for each extension, plus its ERP name and key.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's browser extension configurations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfBrowserExtensionConfigListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of browser extension pages",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's browser extension pages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfBrowserExtensionPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Creates a browser extension for the current account.",
        "requestBody": {
          "description": "The browser extension to create. Name is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created browser extension.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserExtensionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Name is missing."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/widget": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Creates a widget-backed browser extension, along with its URL and page.",
        "requestBody": {
          "description": "The extension to create. Name and WidgetId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created browser extension page.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserExtensionPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Name or WidgetId is missing, or the widget does not exist / belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/{id}": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Gets a browser extension by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The browser extension's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested browser extension."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No browser extension exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Partially updates a browser extension (name, description, welcome message and system prompt).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The browser extension's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The browser extension was updated."
          },
          "404": {
            "description": "No browser extension exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/{id}/url": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of URLs for a browser extension page",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The browser extension's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The browser extension's URLs."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-url": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds a URL to a browser extension.",
        "requestBody": {
          "description": "The URL to add. Url is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionUrlRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionUrlRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionUrlRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created URL."
          },
          "400": {
            "description": "Url is missing."
          },
          "403": {
            "description": "The browser extension does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-url/{urlId}": {
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Partially updates a browser extension URL (URL and name).",
        "parameters": [
          {
            "name": "urlId",
            "in": "path",
            "description": "The browser extension URL's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionUrlRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionUrlRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionUrlRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The URL was updated."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "No URL exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/{id}/model": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of AI models for a browser extension page",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The browser extension's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The browser extension's AI models."
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-model": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds an AI model to a browser extension.",
        "requestBody": {
          "description": "Identifies the browser extension and the AI model to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionModelRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionModelRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionModelRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created model link."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-model/{modelId}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Removes an AI model from a browser extension.",
        "parameters": [
          {
            "name": "modelId",
            "in": "path",
            "description": "The browser extension model link's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The model link was deleted."
          },
          "404": {
            "description": "No model link exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of MCP tools",
        "responses": {
          "200": {
            "description": "The account's MCP tools."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tools"
        ],
        "summary": "Adds a tool to an MCP server.",
        "description": "Required fields and applied settings vary by tool type (entity, action, file, run-script or third-party).",
        "requestBody": {
          "description": "The MCP tool to create. McpServerId, Name, Description and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRequest"
              },
              "examples": {
                "Entity (list) tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_sales_orders",
                    "Description": "Returns sales orders, optionally filtered by customer or date.",
                    "Title": "Get Sales Orders",
                    "Type": "Entity",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "ResponseType": "JsonArray"
                  }
                },
                "Action tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "create_ticket",
                    "Description": "Creates a support ticket from the supplied subject and priority.",
                    "Title": "Create Ticket",
                    "Type": "Action",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "ActionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                    "ResponseType": "Text"
                  }
                },
                "File tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_invoice_pdf",
                    "Description": "Returns the PDF attachment for an invoice.",
                    "Title": "Get Invoice PDF",
                    "Type": "File",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 1,
                    "FileFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
                    "ResponseFilename": "invoice.pdf"
                  }
                },
                "Third-party tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "search_web",
                    "Description": "Proxies a search tool exposed by an upstream MCP server.",
                    "Title": "Search Web",
                    "Type": "ThirdParty",
                    "ThirdPartyMcpToolId": "0f8fad5b-d9cb-469f-a165-70867728950e"
                  }
                },
                "Run-script tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "calculate_margin",
                    "Description": "Computes gross margin from revenue and cost inputs.",
                    "Title": "Calculate Margin",
                    "Type": "RunScript",
                    "FieldType": "Quantity",
                    "DecimalPlaces": 2,
                    "Script": "return (revenue - cost) / revenue * 100;"
                  }
                },
                "Entity tool with parameters and return fields": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_sales_orders",
                    "Description": "Returns sales orders filtered by customer, with selected columns.",
                    "Title": "Get Sales Orders",
                    "Type": "Entity",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "ResponseType": "JsonArray",
                    "Parameters": [
                      {
                        "Name": "customer_name",
                        "FieldType": "String",
                        "ApplyType": "None",
                        "Description": "The customer name to search for.",
                        "Required": true
                      },
                      {
                        "Name": "customer_id",
                        "ApplyType": "Field",
                        "EntityFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                        "Description": "Restrict results to this customer.",
                        "RestrictionType": "Equals"
                      }
                    ],
                    "ResponseFields": [
                      {
                        "Name": "order_number",
                        "Description": "The sales order number.",
                        "EntityFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
                      },
                      {
                        "Name": "order_total",
                        "Description": "The total amount of the order.",
                        "EntityFieldId": "0f8fad5b-d9cb-469f-a165-70867728950e"
                      }
                    ]
                  }
                },
                "Action tool with action fields": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "create_ticket",
                    "Description": "Creates a support ticket from the supplied subject, at a fixed priority.",
                    "Title": "Create Ticket",
                    "Type": "Action",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "ActionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                    "ResponseType": "Text",
                    "Parameters": [
                      {
                        "Name": "subject",
                        "ApplyType": "ActionField",
                        "Description": "Value written to the action's Subject field.",
                        "Required": true,
                        "ActionField": "Subject"
                      }
                    ],
                    "ActionFields": [
                      {
                        "ValueType": 1,
                        "ActionField": "Priority",
                        "ConstantValue": "High"
                      }
                    ],
                    "ResponseFields": [
                      {
                        "Name": "ticket_id",
                        "Description": "The id of the created ticket.",
                        "ActionField": "TicketId"
                      }
                    ]
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRequest"
              },
              "examples": {
                "Entity (list) tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_sales_orders",
                    "Description": "Returns sales orders, optionally filtered by customer or date.",
                    "Title": "Get Sales Orders",
                    "Type": "Entity",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "ResponseType": "JsonArray"
                  }
                },
                "Action tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "create_ticket",
                    "Description": "Creates a support ticket from the supplied subject and priority.",
                    "Title": "Create Ticket",
                    "Type": "Action",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "ActionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                    "ResponseType": "Text"
                  }
                },
                "File tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_invoice_pdf",
                    "Description": "Returns the PDF attachment for an invoice.",
                    "Title": "Get Invoice PDF",
                    "Type": "File",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 1,
                    "FileFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
                    "ResponseFilename": "invoice.pdf"
                  }
                },
                "Third-party tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "search_web",
                    "Description": "Proxies a search tool exposed by an upstream MCP server.",
                    "Title": "Search Web",
                    "Type": "ThirdParty",
                    "ThirdPartyMcpToolId": "0f8fad5b-d9cb-469f-a165-70867728950e"
                  }
                },
                "Run-script tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "calculate_margin",
                    "Description": "Computes gross margin from revenue and cost inputs.",
                    "Title": "Calculate Margin",
                    "Type": "RunScript",
                    "FieldType": "Quantity",
                    "DecimalPlaces": 2,
                    "Script": "return (revenue - cost) / revenue * 100;"
                  }
                },
                "Entity tool with parameters and return fields": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_sales_orders",
                    "Description": "Returns sales orders filtered by customer, with selected columns.",
                    "Title": "Get Sales Orders",
                    "Type": "Entity",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "ResponseType": "JsonArray",
                    "Parameters": [
                      {
                        "Name": "customer_name",
                        "FieldType": "String",
                        "ApplyType": "None",
                        "Description": "The customer name to search for.",
                        "Required": true
                      },
                      {
                        "Name": "customer_id",
                        "ApplyType": "Field",
                        "EntityFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                        "Description": "Restrict results to this customer.",
                        "RestrictionType": "Equals"
                      }
                    ],
                    "ResponseFields": [
                      {
                        "Name": "order_number",
                        "Description": "The sales order number.",
                        "EntityFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
                      },
                      {
                        "Name": "order_total",
                        "Description": "The total amount of the order.",
                        "EntityFieldId": "0f8fad5b-d9cb-469f-a165-70867728950e"
                      }
                    ]
                  }
                },
                "Action tool with action fields": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "create_ticket",
                    "Description": "Creates a support ticket from the supplied subject, at a fixed priority.",
                    "Title": "Create Ticket",
                    "Type": "Action",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "ActionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                    "ResponseType": "Text",
                    "Parameters": [
                      {
                        "Name": "subject",
                        "ApplyType": "ActionField",
                        "Description": "Value written to the action's Subject field.",
                        "Required": true,
                        "ActionField": "Subject"
                      }
                    ],
                    "ActionFields": [
                      {
                        "ValueType": 1,
                        "ActionField": "Priority",
                        "ConstantValue": "High"
                      }
                    ],
                    "ResponseFields": [
                      {
                        "Name": "ticket_id",
                        "Description": "The id of the created ticket.",
                        "ActionField": "TicketId"
                      }
                    ]
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRequest"
              },
              "examples": {
                "Entity (list) tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_sales_orders",
                    "Description": "Returns sales orders, optionally filtered by customer or date.",
                    "Title": "Get Sales Orders",
                    "Type": "Entity",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "ResponseType": "JsonArray"
                  }
                },
                "Action tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "create_ticket",
                    "Description": "Creates a support ticket from the supplied subject and priority.",
                    "Title": "Create Ticket",
                    "Type": "Action",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "ActionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                    "ResponseType": "Text"
                  }
                },
                "File tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_invoice_pdf",
                    "Description": "Returns the PDF attachment for an invoice.",
                    "Title": "Get Invoice PDF",
                    "Type": "File",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 1,
                    "FileFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b",
                    "ResponseFilename": "invoice.pdf"
                  }
                },
                "Third-party tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "search_web",
                    "Description": "Proxies a search tool exposed by an upstream MCP server.",
                    "Title": "Search Web",
                    "Type": "ThirdParty",
                    "ThirdPartyMcpToolId": "0f8fad5b-d9cb-469f-a165-70867728950e"
                  }
                },
                "Run-script tool": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "calculate_margin",
                    "Description": "Computes gross margin from revenue and cost inputs.",
                    "Title": "Calculate Margin",
                    "Type": "RunScript",
                    "FieldType": "Quantity",
                    "DecimalPlaces": 2,
                    "Script": "return (revenue - cost) / revenue * 100;"
                  }
                },
                "Entity tool with parameters and return fields": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "get_sales_orders",
                    "Description": "Returns sales orders filtered by customer, with selected columns.",
                    "Title": "Get Sales Orders",
                    "Type": "Entity",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "ResponseType": "JsonArray",
                    "Parameters": [
                      {
                        "Name": "customer_name",
                        "FieldType": "String",
                        "ApplyType": "None",
                        "Description": "The customer name to search for.",
                        "Required": true
                      },
                      {
                        "Name": "customer_id",
                        "ApplyType": "Field",
                        "EntityFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                        "Description": "Restrict results to this customer.",
                        "RestrictionType": "Equals"
                      }
                    ],
                    "ResponseFields": [
                      {
                        "Name": "order_number",
                        "Description": "The sales order number.",
                        "EntityFieldId": "2c4a230c-5085-4924-a3e1-25fb4fc5965b"
                      },
                      {
                        "Name": "order_total",
                        "Description": "The total amount of the order.",
                        "EntityFieldId": "0f8fad5b-d9cb-469f-a165-70867728950e"
                      }
                    ]
                  }
                },
                "Action tool with action fields": {
                  "value": {
                    "McpServerId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "create_ticket",
                    "Description": "Creates a support ticket from the supplied subject, at a fixed priority.",
                    "Title": "Create Ticket",
                    "Type": "Action",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "ActionId": "c56a4180-65aa-42ec-a945-5fd21dec0538",
                    "ResponseType": "Text",
                    "Parameters": [
                      {
                        "Name": "subject",
                        "ApplyType": "ActionField",
                        "Description": "Value written to the action's Subject field.",
                        "Required": true,
                        "ActionField": "Subject"
                      }
                    ],
                    "ActionFields": [
                      {
                        "ValueType": 1,
                        "ActionField": "Priority",
                        "ConstantValue": "High"
                      }
                    ],
                    "ResponseFields": [
                      {
                        "Name": "ticket_id",
                        "Description": "The id of the created ticket.",
                        "ActionField": "TicketId"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created MCP tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is invalid/too long, or the name is in use."
          },
          "404": {
            "description": "The MCP server does not exist, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-tool": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds an MCP tool to a browser extension.",
        "requestBody": {
          "description": "Identifies the browser extension and the MCP tool to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionToolRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created tool link."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-tool/{toolId}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Removes an MCP tool from a browser extension.",
        "parameters": [
          {
            "name": "toolId",
            "in": "path",
            "description": "The browser extension tool link's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool link was deleted."
          },
          "404": {
            "description": "No tool link exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt-group": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Creates a prompt group on a browser extension (optionally nested under a parent group).",
        "requestBody": {
          "description": "The prompt group to create. Name is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptGroupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created prompt group."
          },
          "400": {
            "description": "Name is missing."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt-group/{groupId}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Deletes a browser extension prompt group.",
        "parameters": [
          {
            "name": "groupId",
            "in": "path",
            "description": "The prompt group's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt group was deleted."
          },
          "404": {
            "description": "The id is missing or invalid."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds an MCP prompt to a browser extension, optionally with a slash command and prompt group.",
        "requestBody": {
          "description": "Identifies the browser extension, MCP prompt, group and slash command.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created prompt link."
          },
          "404": {
            "description": "The referenced MCP prompt does not exist."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt/{promptId}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Removes an MCP prompt from a browser extension.",
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "description": "The browser extension prompt link's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt link was deleted."
          },
          "404": {
            "description": "No prompt link exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Gets a browser extension prompt link, including its parameters.",
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "description": "The browser extension prompt link's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt link and its parameters."
          },
          "404": {
            "description": "No prompt link exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPromptRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPromptRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPromptRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt-parameter": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Binds an MCP prompt parameter to a browser extension prompt.",
        "requestBody": {
          "description": "Identifies the prompt, the MCP prompt parameter, and how the value is supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created parameter binding."
          },
          "400": {
            "description": "The parameter does not belong to the prompt, or is already bound."
          },
          "404": {
            "description": "The prompt does not exist."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt-parameter/{parameterId}": {
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "parameters": [
          {
            "name": "parameterId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPromptParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPromptParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPromptParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "parameters": [
          {
            "name": "parameterId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt/{promptId}/attachment": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Lists the page attachments linked to a browser extension prompt.",
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "description": "The browser extension prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt's linked attachments, each with the page attachment's name."
          },
          "404": {
            "description": "No prompt exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt-attachment": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Links a page attachment to a browser extension prompt.",
        "requestBody": {
          "description": "Identifies the prompt and the page attachment to link.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPromptAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created attachment link, including the page attachment's name."
          },
          "400": {
            "description": "The page attachment is already linked, or does not belong to the prompt's extension."
          },
          "404": {
            "description": "The prompt does not exist."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt-attachment/{attachmentId}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Removes a page attachment link from a browser extension prompt.",
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "description": "The prompt attachment link's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment link was removed."
          },
          "404": {
            "description": "No link exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-prompt/{promptId}/permission": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Lists the security restrictions that apply to a browser extension prompt.",
        "parameters": [
          {
            "name": "promptId",
            "in": "path",
            "description": "The browser extension prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The prompt's security restrictions."
          },
          "404": {
            "description": "No prompt exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/conversation": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Creates a browser extension chat conversation, optionally with initial messages.",
        "description": "Honors a client-supplied conversation id when valid (for offline-first clients), otherwise generates one.",
        "requestBody": {
          "description": "The conversation to create. BrowserExtensionId is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBrowserExtensionConversationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBrowserExtensionConversationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBrowserExtensionConversationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created conversation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserExtensionConversationResponse"
                }
              }
            }
          },
          "400": {
            "description": "BrowserExtensionId is missing or invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/conversation/list/{browserExtensionId}": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of conversations",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "browserExtensionId",
            "in": "path",
            "description": "The browser extension's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user's conversations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfBrowserExtensionConversationResponse"
                }
              }
            }
          },
          "400": {
            "description": "The browser extension id is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/conversation/{id}": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Gets a browser extension conversation by id, including its messages.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The conversation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested conversation and its messages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserExtensionConversationDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "The conversation id is invalid."
          },
          "403": {
            "description": "The conversation belongs to another user."
          },
          "404": {
            "description": "No conversation exists with that id."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Partially updates a browser extension conversation (title, pinned state and status).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The conversation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBrowserExtensionConversationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBrowserExtensionConversationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBrowserExtensionConversationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated conversation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BrowserExtensionConversationResponse"
                }
              }
            }
          },
          "400": {
            "description": "The conversation id is invalid."
          },
          "403": {
            "description": "The conversation belongs to another user."
          },
          "404": {
            "description": "No conversation exists with that id."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/conversation/{id}/message": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Appends messages to a browser extension conversation and updates its message count.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The conversation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The messages to append.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateBrowserExtensionConversationMessageRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateBrowserExtensionConversationMessageRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateBrowserExtensionConversationMessageRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The messages were appended."
          },
          "400": {
            "description": "The conversation id is invalid."
          },
          "403": {
            "description": "The conversation belongs to another user."
          },
          "404": {
            "description": "No conversation exists with that id."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension/conversation/sync": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Two-way syncs browser extension conversations between the client and server.",
        "description": "Upserts the client's conversations and messages (newest-wins on metadata, append-only for messages), then returns the server's conversations changed since the supplied last-sync date.",
        "requestBody": {
          "description": "The client's conversations to sync and the last sync date. BrowserExtensionId is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncBrowserExtensionConversationsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SyncBrowserExtensionConversationsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SyncBrowserExtensionConversationsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The server-side changes since the last sync, plus the new sync date.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SyncBrowserExtensionConversationsResponse"
                }
              }
            }
          },
          "400": {
            "description": "BrowserExtensionId is missing or invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page-attachment": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds an attachment to a browser extension page.",
        "requestBody": {
          "description": "The attachment to create. Name and BrowserExtensionPageId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created attachment."
          },
          "400": {
            "description": "Name is missing."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "The page does not exist."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page-attachment/{id}": {
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Partially updates a browser extension page attachment (its name).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated attachment."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "No attachment exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Deletes a browser extension page attachment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment was deleted."
          },
          "404": {
            "description": "No attachment exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page-attachment-field": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Links one or more page fields to a browser extension page attachment.",
        "requestBody": {
          "description": "Identifies the attachment and the page field ids to link. At least one field id is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageAttachmentFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageAttachmentFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageAttachmentFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created attachment fields."
          },
          "400": {
            "description": "No field ids were supplied."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "The attachment does not exist."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page-attachment-field/{id}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Removes a field from a browser extension page attachment.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment field was deleted."
          },
          "404": {
            "description": "No attachment field exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of browser extension pages",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's browser extension pages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfBrowserExtensionPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds a page to a browser extension URL.",
        "requestBody": {
          "description": "The page to create. Path is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created page."
          },
          "400": {
            "description": "Path is missing."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page/{browserExtensionPageId}": {
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Partially updates a browser extension page (name, path, widget, identification type and iframe selector).",
        "parameters": [
          {
            "name": "browserExtensionPageId",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated page."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "No page exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page/{id}/parameter": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Replaces a browser extension page's field parameters (selectors).",
        "description": "Deletes the page's existing fields and recreates them from the supplied parameters.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The field parameters to save.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostBrowserExtensionPageParameterRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostBrowserExtensionPageParameterRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostBrowserExtensionPageParameterRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The page's parameters were saved."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "No page exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Replaces a browser extension page's field parameters (selectors).",
        "description": "Deletes the page's existing fields and recreates them from the supplied parameters.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The field parameters to save.",
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostBrowserExtensionPageParameterRequest"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostBrowserExtensionPageParameterRequest"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/PostBrowserExtensionPageParameterRequest"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The page's parameters were updated."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "No page exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page/{id}": {
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Deletes a browser extension page.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The page was deleted."
          },
          "404": {
            "description": "No page exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page-field": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds a field (selector) to a browser extension page.",
        "requestBody": {
          "description": "The field to create. Name, Selector and BrowserExtensionPageId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostBrowserExtensionPageFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created field."
          },
          "400": {
            "description": "Name or Selector is missing."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "The page does not exist."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/browser-extension-page-field/{id}": {
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Updates a browser extension page field. Only supplied values are changed.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "The values to update. Any omitted property is left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchBrowserExtensionPageFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated field."
          },
          "403": {
            "description": "The parent browser extension belongs to another account."
          },
          "404": {
            "description": "No field exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Deletes a browser extension page field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The field was deleted."
          },
          "404": {
            "description": "No field exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/data-lake/entity-split/{id}": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Creates (or replaces) the data lake split for an entity field, partitioning exported data by that field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity field's unique identifier (GUID) to split on.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The created data lake split.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityDataLakeSplitResponse"
                }
              }
            }
          },
          "400": {
            "description": "No field exists with that id."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/data-lake/copy-entity": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Copies an entity (or favorite) into a new data lake entity, duplicating its fields, variables and restrictions.",
        "description": "Carries over default and key fields, list items, calculated fields and negative-value settings, records the data lake source configuration, and grants the caller access to the new entity.",
        "requestBody": {
          "description": "The copy request (source entity/favorite, target connector, name, chunking and calculated-field handling).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DataLakeCopyEntityRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DataLakeCopyEntityRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DataLakeCopyEntityRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created data lake entity.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SimpleEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/definition": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Returns the API's static definition metadata (the embedded definition.json document).",
        "responses": {
          "200": {
            "description": "The API definition document as JSON."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/download": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Downloads a file from a connector's data source.",
        "requestBody": {
          "description": "The download request (connector, file, folder and company).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadFileRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadFileRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DownloadFileRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The file as an octet-stream download."
          },
          "404": {
            "description": "The connector does not exist, belongs to another account, or the caller lacks access."
          },
          "500": {
            "description": "An error occurred while retrieving the file from the connector."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/error": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Returns a ProblemDetails response for unhandled errors (the production exception handler endpoint).",
        "parameters": [
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "500": {
            "description": "A generic problem-details payload describing the error."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/error-local-development": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Returns a detailed ProblemDetails response (message and stack trace) for unhandled errors in development only.",
        "parameters": [
          {
            "name": "api-version",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "500": {
            "description": "A problem-details payload including the error message and stack trace."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/export": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Exports the requested resources via the import/export service and returns the export file.",
        "requestBody": {
          "description": "The export request (resources, description and optional filename).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The export file as a JSON download."
          },
          "400": {
            "description": "The export service reported an error."
          },
          "500": {
            "description": "An error occurred while calling the export service."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/field-type": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of field types",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The supported field types.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfFieldTypeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/home-page": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Gets the current user's home page layout and its tiles (items), resolved with favorites and companies.",
        "responses": {
          "200": {
            "description": "The user's home page.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HomePageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/home-page-item": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Adds a tile (item) to a home page layout.",
        "requestBody": {
          "description": "The home page item to create. HomeLayoutId and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostHomeLayoutItem"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostHomeLayoutItem"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostHomeLayoutItem"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created home page item.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HomeLayoutItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The home page layout does not exist, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/home-page-item/{id}": {
      "patch": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Partially updates a home page item (title, favorite and company).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The home page item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchHomeLayoutItem"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchHomeLayoutItem"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchHomeLayoutItem"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The home page item was updated."
          },
          "404": {
            "description": "No item exists with that id, or its layout belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Deletes a home page item (tile).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The home page item's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The home page item was deleted."
          },
          "404": {
            "description": "No item exists with that id, or its layout belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/restriction-type": {
      "get": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Get a list of restriction types",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The supported restriction types.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfRestrictionTypeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/upload": {
      "post": {
        "tags": [
          "Reference Data"
        ],
        "summary": "Uploads a file to a connector's data source.",
        "description": "Expects a multipart form with the file and a `body` field containing the JSON upload request (connector, folder, type and comment).",
        "responses": {
          "200": {
            "description": "The upload result.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "The file or body was not provided."
          },
          "401": {
            "description": "The caller is not authorized to upload to this connector."
          },
          "404": {
            "description": "The connector does not exist or belongs to another account."
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-response-field/{id}": {
      "get": {
        "tags": [
          "Response fields"
        ],
        "summary": "Gets an MCP tool response field by id, including its entity field and list items.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The response field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested response field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponseFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No response field exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Response fields"
        ],
        "summary": "Partially updates an MCP tool response field (name and description).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The response field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolResponseFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolResponseFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolResponseFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The response field was updated."
          },
          "400": {
            "description": "The name is too long."
          },
          "404": {
            "description": "No response field exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Response fields"
        ],
        "summary": "Deletes an MCP tool response field.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The response field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The response field was deleted."
          },
          "404": {
            "description": "No response field exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-response-field": {
      "post": {
        "tags": [
          "Response fields"
        ],
        "summary": "Adds a response field to an MCP tool.",
        "description": "Action tools require an ActionField; other tool types require an EntityFieldId belonging to the tool's entity.",
        "requestBody": {
          "description": "The response field to create. McpToolId and Name are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolResponseFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolResponseFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolResponseFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created response field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponseFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is too long, or the referenced field is invalid."
          },
          "404": {
            "description": "The MCP tool/server or entity field does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-response-sort/{id}": {
      "get": {
        "tags": [
          "Response fields"
        ],
        "summary": "Get a single MCP tool response sort",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The response sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested response sort.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponseSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No response sort exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Response fields"
        ],
        "summary": "Update a MCP tool response sort",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolResponseSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolResponseSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolResponseSortRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponseSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Response fields"
        ],
        "summary": "Delete a MCP tool response sort",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-response-sort": {
      "post": {
        "tags": [
          "Response fields"
        ],
        "summary": "Add a new MCP tool response sort",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolResponseSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolResponseSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolResponseSortRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponseSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction-apply/{id}": {
      "get": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Gets an MCP tool restriction apply rule by id, resolved with the user or team it applies to.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction apply rule's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested apply rule.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionApplyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No apply rule exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Removes an MCP tool restriction apply rule.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction apply rule's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The apply rule was deleted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionApplyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No apply rule exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction-apply": {
      "post": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Applies an MCP tool restriction to a user, team or MCP client.",
        "requestBody": {
          "description": "The apply rule to create. McpToolRestrictionId, ApplyToType and ApplyToId are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRestrictionApplyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRestrictionApplyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRestrictionApplyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The apply rule was created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionApplyResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the apply-to type is invalid, the target does not exist, or the rule already exists."
          },
          "404": {
            "description": "The restriction or its server does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction/{id}": {
      "get": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Gets an MCP tool restriction by id, including its field and resolved values.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Partially updates an MCP tool restriction (field and restriction type).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The restriction was updated."
          },
          "400": {
            "description": "The referenced field is invalid."
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Deletes an MCP tool restriction along with its values and apply rules.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction was deleted."
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction/{id}/value": {
      "get": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Get a list of values for an MCP tool restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction/{id}/apply": {
      "get": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Get a list of apply rules for an MCP tool restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's apply rules.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolRestrictionApplyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No restriction exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction": {
      "post": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Adds a restriction to an MCP (get-data) tool.",
        "requestBody": {
          "description": "The restriction to create. McpToolId, EntityFieldId and RestrictionType are required; the tool must be a get-data tool and the restriction type must suit the field type. Values and apply rules may optionally be supplied to create them in the same request.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the tool type is wrong, the field is invalid, the restriction type does not suit the field, or a supplied value/apply rule is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction-value/{id}": {
      "get": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Get a single MCP tool restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction value exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Update a MCP tool restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Delete a MCP tool restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-restriction-value": {
      "post": {
        "tags": [
          "Restrictions"
        ],
        "summary": "Add a new MCP tool restriction value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/scheduled-job": {
      "get": {
        "tags": [
          "Scheduled jobs"
        ],
        "summary": "Get a list of scheduled jobs",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the account's scheduled jobs.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfScheduledJobResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Scheduled jobs"
        ],
        "summary": "Creates a scheduled job (email or export) and computes its next run time.",
        "description": "Required schedule parameters depend on the schedule type; export jobs require a destination connector. Email recipients, schedule items (days) and companies are saved alongside the job.",
        "requestBody": {
          "description": "The scheduled job to create. Name, JobType, EntityId and Time are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostScheduledJobRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostScheduledJobRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostScheduledJobRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledJobResponse"
                }
              }
            }
          },
          "201": {
            "description": "The created scheduled job. The `Location` header points to it."
          },
          "400": {
            "description": "A required field is missing or invalid, or the schedule/entity is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/scheduled-job/{id}": {
      "get": {
        "tags": [
          "Scheduled jobs"
        ],
        "summary": "Gets a scheduled job by id, with its schedule items, companies and recipients.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The scheduled job's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested scheduled job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledJobResponse"
                }
              }
            }
          },
          "404": {
            "description": "No scheduled job exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Scheduled jobs"
        ],
        "summary": "Partially updates a scheduled job, recomputing its next run time when the schedule changes.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The scheduled job's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change (including recipients, schedule items and companies). Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchScheduledJobRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchScheduledJobRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchScheduledJobRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated scheduled job.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScheduledJobResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied value is invalid, or the resulting schedule/entity is invalid."
          },
          "404": {
            "description": "No scheduled job exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Scheduled jobs"
        ],
        "summary": "Deletes a scheduled job.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The scheduled job's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "204": {
            "description": "The scheduled job was deleted."
          },
          "404": {
            "description": "No scheduled job exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/scheduled-job/{id}/run": {
      "post": {
        "tags": [
          "Scheduled jobs"
        ],
        "summary": "Triggers a scheduled job to run immediately, outside its normal schedule.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The scheduled job's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "202": {
            "description": "The job run was accepted and queued."
          },
          "404": {
            "description": "No scheduled job exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/security-role": {
      "get": {
        "tags": [
          "Security"
        ],
        "summary": "Lists the security roles available in the account, grouped into user roles and connector roles.",
        "responses": {
          "200": {
            "description": "The account's user and connector security roles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecurityRolesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-server/{id}/tool": {
      "get": {
        "tags": [
          "Servers"
        ],
        "summary": "Get a list of tools for an MCP server",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP server's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Optional filter on tool status.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "type",
            "in": "query",
            "description": "Optional filter on tool type.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The server's tools.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-server/{id}/prompt": {
      "get": {
        "tags": [
          "Servers"
        ],
        "summary": "Get a list of prompts for an MCP server",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP server's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Optional filter on prompt status.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The server's prompts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpPromptResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-server": {
      "get": {
        "tags": [
          "Servers"
        ],
        "summary": "Get a list of MCP servers",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpServerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Servers"
        ],
        "summary": "Add a new MCP server",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpServerRequest"
              },
              "examples": {
                "Server with icon": {
                  "value": {
                    "Name": "Sales Assistant",
                    "Description": "Tools and prompts for querying sales data."
                  }
                },
                "With tags": {
                  "value": {
                    "Name": "Finance Assistant",
                    "Description": "Tools for finance reporting.",
                    "Tags": [
                      {
                        "Value": "Finance"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                },
                "Minimal (name only)": {
                  "value": {
                    "Name": "Reporting Server"
                  }
                },
                "Code mode (hybrid)": {
                  "value": {
                    "Name": "Data Assistant",
                    "Description": "Exposes a code tool plus the individual tools.",
                    "CodeMode": true,
                    "CodeModeToolName": "run_code",
                    "CodeModeHideTools": false
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpServerRequest"
              },
              "examples": {
                "Server with icon": {
                  "value": {
                    "Name": "Sales Assistant",
                    "Description": "Tools and prompts for querying sales data."
                  }
                },
                "With tags": {
                  "value": {
                    "Name": "Finance Assistant",
                    "Description": "Tools for finance reporting.",
                    "Tags": [
                      {
                        "Value": "Finance"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                },
                "Minimal (name only)": {
                  "value": {
                    "Name": "Reporting Server"
                  }
                },
                "Code mode (hybrid)": {
                  "value": {
                    "Name": "Data Assistant",
                    "Description": "Exposes a code tool plus the individual tools.",
                    "CodeMode": true,
                    "CodeModeToolName": "run_code",
                    "CodeModeHideTools": false
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpServerRequest"
              },
              "examples": {
                "Server with icon": {
                  "value": {
                    "Name": "Sales Assistant",
                    "Description": "Tools and prompts for querying sales data."
                  }
                },
                "With tags": {
                  "value": {
                    "Name": "Finance Assistant",
                    "Description": "Tools for finance reporting.",
                    "Tags": [
                      {
                        "Value": "Finance"
                      },
                      {
                        "TagId": "a1b2c3d4-1111-2222-3333-444455556666"
                      }
                    ]
                  }
                },
                "Minimal (name only)": {
                  "value": {
                    "Name": "Reporting Server"
                  }
                },
                "Code mode (hybrid)": {
                  "value": {
                    "Name": "Data Assistant",
                    "Description": "Exposes a code tool plus the individual tools.",
                    "CodeMode": true,
                    "CodeModeToolName": "run_code",
                    "CodeModeHideTools": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-server/{id}": {
      "get": {
        "tags": [
          "Servers"
        ],
        "summary": "Get a single MCP server",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Servers"
        ],
        "summary": "Update a MCP server",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The server's display name. Required on create. Required when creating (POST).",
                    "nullable": true,
                    "example": "Sales Assistant"
                  },
                  "Description": {
                    "type": "string",
                    "description": "An optional description of what the server exposes.",
                    "nullable": true,
                    "example": "Tools and prompts for querying sales data."
                  },
                  "CodeMode": {
                    "type": "boolean",
                    "description": "When true, the server exposes its tools as a single programmatic code tool (that the model\r\n            writes code against) instead of one MCP tool per configured tool. Omit to leave unchanged on update.",
                    "nullable": true,
                    "example": true
                  },
                  "CodeModeToolName": {
                    "type": "string",
                    "description": "The editable name of the code tool used in code mode. Null or empty falls back to `run_code`.",
                    "nullable": true,
                    "example": "run_code"
                  },
                  "CodeModeHideTools": {
                    "type": "boolean",
                    "description": "Controls what the server exposes in code mode: false = hybrid (the code tool plus the\r\n            individual tools), true = exclusive (only the code tool). Omit to leave unchanged on update.",
                    "nullable": true,
                    "example": false
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an MCP server definition."
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales & Finance Assistant"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Tools for sales, finance, and inventory data."
                  }
                },
                "Enable code mode": {
                  "value": {
                    "CodeMode": true
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "required": [
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The server's display name. Required on create. Required when creating (POST).",
                    "nullable": true,
                    "example": "Sales Assistant"
                  },
                  "Description": {
                    "type": "string",
                    "description": "An optional description of what the server exposes.",
                    "nullable": true,
                    "example": "Tools and prompts for querying sales data."
                  },
                  "CodeMode": {
                    "type": "boolean",
                    "description": "When true, the server exposes its tools as a single programmatic code tool (that the model\r\n            writes code against) instead of one MCP tool per configured tool. Omit to leave unchanged on update.",
                    "nullable": true,
                    "example": true
                  },
                  "CodeModeToolName": {
                    "type": "string",
                    "description": "The editable name of the code tool used in code mode. Null or empty falls back to `run_code`.",
                    "nullable": true,
                    "example": "run_code"
                  },
                  "CodeModeHideTools": {
                    "type": "boolean",
                    "description": "Controls what the server exposes in code mode: false = hybrid (the code tool plus the\r\n            individual tools), true = exclusive (only the code tool). Omit to leave unchanged on update.",
                    "nullable": true,
                    "example": false
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an MCP server definition."
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales & Finance Assistant"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Tools for sales, finance, and inventory data."
                  }
                },
                "Enable code mode": {
                  "value": {
                    "CodeMode": true
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "required": [
                  "Name"
                ],
                "type": "object",
                "properties": {
                  "Name": {
                    "type": "string",
                    "description": "The server's display name. Required on create. Required when creating (POST).",
                    "nullable": true,
                    "example": "Sales Assistant"
                  },
                  "Description": {
                    "type": "string",
                    "description": "An optional description of what the server exposes.",
                    "nullable": true,
                    "example": "Tools and prompts for querying sales data."
                  },
                  "CodeMode": {
                    "type": "boolean",
                    "description": "When true, the server exposes its tools as a single programmatic code tool (that the model\r\n            writes code against) instead of one MCP tool per configured tool. Omit to leave unchanged on update.",
                    "nullable": true,
                    "example": true
                  },
                  "CodeModeToolName": {
                    "type": "string",
                    "description": "The editable name of the code tool used in code mode. Null or empty falls back to `run_code`.",
                    "nullable": true,
                    "example": "run_code"
                  },
                  "CodeModeHideTools": {
                    "type": "boolean",
                    "description": "Controls what the server exposes in code mode: false = hybrid (the code tool plus the\r\n            individual tools), true = exclusive (only the code tool). Omit to leave unchanged on update.",
                    "nullable": true,
                    "example": false
                  }
                },
                "additionalProperties": false,
                "description": "Fields for creating or updating an MCP server definition."
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "Sales & Finance Assistant"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Tools for sales, finance, and inventory data."
                  }
                },
                "Enable code mode": {
                  "value": {
                    "CodeMode": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpServerResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Servers"
        ],
        "summary": "Delete a MCP server",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/shared-instruction": {
      "get": {
        "tags": [
          "Shared instructions"
        ],
        "summary": "Get a list of shared instructions",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSharedInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Shared instructions"
        ],
        "summary": "Add a new shared instruction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSharedInstructionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSharedInstructionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSharedInstructionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/shared-instruction/{id}": {
      "get": {
        "tags": [
          "Shared instructions"
        ],
        "summary": "Get a single shared instruction",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedInstructionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Shared instructions"
        ],
        "summary": "Update a shared instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSharedInstructionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSharedInstructionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSharedInstructionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Shared instructions"
        ],
        "summary": "Delete a shared instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-group": {
      "get": {
        "tags": [
          "Sidekick groups"
        ],
        "summary": "Get a list of Sidekick prompt groups",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Sidekick groups"
        ],
        "summary": "Add a new Sidekick prompt group",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptGroupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptGroupRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-group/{id}": {
      "get": {
        "tags": [
          "Sidekick groups"
        ],
        "summary": "Get a single Sidekick prompt group",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptGroupResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick groups"
        ],
        "summary": "Update a Sidekick prompt group",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptGroupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick groups"
        ],
        "summary": "Delete a Sidekick prompt group",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message/{id}/restriction": {
      "get": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Get a list of restrictions for a Sidekick prompt message.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The message's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the message's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message/{id}": {
      "get": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Get a single Sidekick prompt message",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Update a Sidekick prompt message",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Delete a Sidekick prompt message",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message": {
      "post": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Add a new Sidekick prompt message",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message-restriction/{id}/value": {
      "get": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Get a list of comparison values for a Sidekick prompt message restriction.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message-restriction/{id}": {
      "get": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Get a single Sidekick prompt message restriction",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Update a Sidekick prompt message restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Delete a Sidekick prompt message restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message-restriction": {
      "post": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Add a new Sidekick prompt message restriction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message-restriction-value/{id}": {
      "get": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Get a single Sidekick prompt message restriction value",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Update a Sidekick prompt message restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Delete a Sidekick prompt message restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-message-restriction-value": {
      "post": {
        "tags": [
          "Sidekick messages"
        ],
        "summary": "Add a new Sidekick prompt message restriction value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMessageRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMessageRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page/{id}/filter": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a list of filters for a Sidekick prompt page.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the page's filters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptPageFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page/{id}/parameter-mapping": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a list of parameter mappings for a Sidekick prompt page.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the page's parameter mappings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptPageParameterMappingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page/{id}/refresh-attachment": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a list of refresh attachments for a Sidekick prompt page.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The page's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the page's refresh attachments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptPageRefreshAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page/{id}": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a single Sidekick prompt page",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Update a Sidekick prompt page",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Delete a Sidekick prompt page",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page": {
      "post": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Add a new Sidekick prompt page",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page-filter/{id}": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a single Sidekick prompt page filter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageFilterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Update a Sidekick prompt page filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageFilterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Delete a Sidekick prompt page filter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page-filter": {
      "post": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Add a new Sidekick prompt page filter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageFilterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageFilterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageFilterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageFilterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page-parameter-mapping/{id}": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a single Sidekick prompt page parameter mapping",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageParameterMappingResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Update a Sidekick prompt page parameter mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageParameterMappingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageParameterMappingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageParameterMappingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageParameterMappingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Delete a Sidekick prompt page parameter mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page-parameter-mapping": {
      "post": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Add a new Sidekick prompt page parameter mapping",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageParameterMappingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageParameterMappingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageParameterMappingRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageParameterMappingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page-refresh-attachment/{id}": {
      "get": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Get a single Sidekick prompt page refresh attachment",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageRefreshAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Update a Sidekick prompt page refresh attachment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRefreshAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRefreshAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRefreshAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageRefreshAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Delete a Sidekick prompt page refresh attachment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-page-refresh-attachment": {
      "post": {
        "tags": [
          "Sidekick pages"
        ],
        "summary": "Add a new Sidekick prompt page refresh attachment",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRefreshAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRefreshAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptPageRefreshAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptPageRefreshAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter/{id}/value": {
      "get": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Get a list of predefined values for a Sidekick prompt parameter.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the parameter's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptParameterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter/{id}": {
      "get": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Get a single Sidekick prompt parameter",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Update a Sidekick prompt parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Delete a Sidekick prompt parameter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter": {
      "post": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Add a new Sidekick prompt parameter",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter-value/{id}/mapping": {
      "get": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Get a list of interdependency mappings for a Sidekick prompt parameter value.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the value's mappings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptParameterValueMappingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter-value/{id}": {
      "get": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Get a single Sidekick prompt parameter value",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterValueResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Update a Sidekick prompt parameter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Delete a Sidekick prompt parameter value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter-value": {
      "post": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Add a new Sidekick prompt parameter value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter-value-mapping/{id}": {
      "get": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Get a single Sidekick prompt parameter value mapping",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterValueMappingResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Update a Sidekick prompt parameter value mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueMappingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueMappingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueMappingRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterValueMappingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Delete a Sidekick prompt parameter value mapping",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-parameter-value-mapping": {
      "post": {
        "tags": [
          "Sidekick parameters"
        ],
        "summary": "Add a new Sidekick prompt parameter value mapping",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueMappingRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueMappingRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptParameterValueMappingRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptParameterValueMappingResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt/{id}/parameter": {
      "get": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Get a list of parameters for a Sidekick prompt.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the prompt's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt/{id}/message": {
      "get": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Get a list of messages for a Sidekick prompt.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the prompt's messages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptMessageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt/{id}/page": {
      "get": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Get a list of pages for a Sidekick prompt.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the prompt's pages.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptPageResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt/{id}/mcp-tool": {
      "get": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Get a list of linked MCP tools for a Sidekick prompt.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The prompt's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of the prompt's linked MCP tools.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptMcpToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt": {
      "get": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Get a list of Sidekick prompts",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSidekickPromptResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Add a new Sidekick prompt",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt/{id}": {
      "get": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Get a single Sidekick prompt",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Update a Sidekick prompt",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick prompts"
        ],
        "summary": "Delete a Sidekick prompt",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-mcp-tool/{id}": {
      "get": {
        "tags": [
          "Sidekick tools"
        ],
        "summary": "Get a single Sidekick prompt MCP tool",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMcpToolResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Sidekick tools"
        ],
        "summary": "Delete a Sidekick prompt MCP tool",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/sidekick-prompt-mcp-tool": {
      "post": {
        "tags": [
          "Sidekick tools"
        ],
        "summary": "Add a new Sidekick prompt MCP tool",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMcpToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMcpToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteSidekickPromptMcpToolRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SidekickPromptMcpToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table/{id}": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Gets an entity table by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested entity table.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No entity table exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tables"
        ],
        "summary": "Partially updates an entity table (join type, alias and summary).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityTableRequest"
              },
              "examples": {
                "Change alias": {
                  "value": {
                    "Alias": "orders"
                  }
                },
                "Mark as summary": {
                  "value": {
                    "Summary": true
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityTableRequest"
              },
              "examples": {
                "Change alias": {
                  "value": {
                    "Alias": "orders"
                  }
                },
                "Mark as summary": {
                  "value": {
                    "Summary": true
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityTableRequest"
              },
              "examples": {
                "Change alias": {
                  "value": {
                    "Alias": "orders"
                  }
                },
                "Mark as summary": {
                  "value": {
                    "Summary": true
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The entity table was updated."
          },
          "400": {
            "description": "A supplied value is invalid (e.g. changing the join type when not joined, or an alias that is too long)."
          },
          "404": {
            "description": "No entity table exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tables"
        ],
        "summary": "Deletes an entity table along with its restrictions, restriction values, joins and field summaries.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity table was deleted."
          },
          "400": {
            "description": "The id is invalid, or another table is joined to this one."
          },
          "404": {
            "description": "No entity table exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table/{id}/field": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a list of fields for an entity table",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity table's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityTableFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No entity table exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table/{id}/join": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a list of joins for an entity table",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity table's joins.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityTableJoinResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No entity table exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table/{id}/restriction": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a list of restrictions for an entity table",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The entity table's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityTableRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is missing or invalid."
          },
          "404": {
            "description": "No entity table exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table": {
      "post": {
        "tags": [
          "Tables"
        ],
        "summary": "Adds a table to an entity, optionally joining it to an existing table.",
        "description": "When the entity already has tables, a join target is required; the join needs a type and from/to fields, and aliases must be unique.",
        "requestBody": {
          "description": "The table to create. EntityId, Name and DatabaseName are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityTableRequest"
              },
              "examples": {
                "Primary table": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "SalesOrderHeader",
                    "DatabaseName": "dbo.SalesOrderHeader",
                    "Alias": "soh",
                    "TableNumber": 1
                  }
                },
                "Joined table": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Customer",
                    "DatabaseName": "dbo.Customer",
                    "Alias": "c",
                    "JoinToTableId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "JoinType": 1,
                    "FromFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "ToFieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityTableRequest"
              },
              "examples": {
                "Primary table": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "SalesOrderHeader",
                    "DatabaseName": "dbo.SalesOrderHeader",
                    "Alias": "soh",
                    "TableNumber": 1
                  }
                },
                "Joined table": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Customer",
                    "DatabaseName": "dbo.Customer",
                    "Alias": "c",
                    "JoinToTableId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "JoinType": 1,
                    "FromFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "ToFieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityTableRequest"
              },
              "examples": {
                "Primary table": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "SalesOrderHeader",
                    "DatabaseName": "dbo.SalesOrderHeader",
                    "Alias": "soh",
                    "TableNumber": 1
                  }
                },
                "Joined table": {
                  "value": {
                    "EntityId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Name": "Customer",
                    "DatabaseName": "dbo.Customer",
                    "Alias": "c",
                    "JoinToTableId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "JoinType": 1,
                    "FromFieldId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "ToFieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created entity table.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is too long/invalid, or the alias is not unique."
          },
          "404": {
            "description": "The entity or join-to table does not exist or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-field/{id}": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a single entity table field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table field summary's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested table field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No table field exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tables"
        ],
        "summary": "Update a entity table field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tables"
        ],
        "summary": "Delete a entity table field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-field": {
      "post": {
        "tags": [
          "Tables"
        ],
        "summary": "Add a new entity table field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-join/{id}": {
      "delete": {
        "tags": [
          "Tables"
        ],
        "summary": "Delete a entity table join",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table join's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The join was deleted."
          },
          "400": {
            "description": "The id is invalid, or it is the table's last join."
          },
          "404": {
            "description": "No join exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a single entity table join",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableJoinResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tables"
        ],
        "summary": "Update a entity table join",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableJoinRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableJoinRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableJoinRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableJoinResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-join": {
      "post": {
        "tags": [
          "Tables"
        ],
        "summary": "Add a new entity table join",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableJoinRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableJoinRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableJoinRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableJoinResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-restriction/{id}": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a single entity table restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tables"
        ],
        "summary": "Update a entity table restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tables"
        ],
        "summary": "Delete a entity table restriction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-restriction/{id}/value": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a list of values for an entity table restriction",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table restriction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The restriction's values.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityTableRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-restriction": {
      "post": {
        "tags": [
          "Tables"
        ],
        "summary": "Add a new entity table restriction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableRestrictionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-restriction-value/{id}": {
      "get": {
        "tags": [
          "Tables"
        ],
        "summary": "Get a single entity table restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity table restriction value's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested restriction value.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No restriction value exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tables"
        ],
        "summary": "Update a entity table restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tables"
        ],
        "summary": "Delete a entity table restriction value",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-table-restriction-value": {
      "post": {
        "tags": [
          "Tables"
        ],
        "summary": "Add a new entity table restriction value",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionValueRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionValueRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityTableRestrictionValueRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityTableRestrictionValueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get a list of tags",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user's tags.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfTagResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Add a new tag",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTagRequest"
              },
              "examples": {
                "Colored tag with icon": {
                  "value": {
                    "Value": "High Priority",
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "Icon": "flag"
                  }
                },
                "Minimal (value only)": {
                  "value": {
                    "Value": "Archived"
                  }
                },
                "Tag owned by another user": {
                  "value": {
                    "Value": "Team Review",
                    "UserId": "b5f8c2a1-7777-8888-9999-aabbccddeeff",
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTagRequest"
              },
              "examples": {
                "Colored tag with icon": {
                  "value": {
                    "Value": "High Priority",
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "Icon": "flag"
                  }
                },
                "Minimal (value only)": {
                  "value": {
                    "Value": "Archived"
                  }
                },
                "Tag owned by another user": {
                  "value": {
                    "Value": "Team Review",
                    "UserId": "b5f8c2a1-7777-8888-9999-aabbccddeeff",
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTagRequest"
              },
              "examples": {
                "Colored tag with icon": {
                  "value": {
                    "Value": "High Priority",
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "Icon": "flag"
                  }
                },
                "Minimal (value only)": {
                  "value": {
                    "Value": "Archived"
                  }
                },
                "Tag owned by another user": {
                  "value": {
                    "Value": "Team Review",
                    "UserId": "b5f8c2a1-7777-8888-9999-aabbccddeeff",
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/{id}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get a single tag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested tag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponse"
                }
              }
            }
          },
          "404": {
            "description": "The tag does not exist or belongs to another user."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tags"
        ],
        "summary": "Update a tag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTagRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Value": "Critical"
                  }
                },
                "Recolor": {
                  "value": {
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                },
                "Change icon only": {
                  "value": {
                    "Icon": "star"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTagRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Value": "Critical"
                  }
                },
                "Recolor": {
                  "value": {
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                },
                "Change icon only": {
                  "value": {
                    "Icon": "star"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTagRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Value": "Critical"
                  }
                },
                "Recolor": {
                  "value": {
                    "ColorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                },
                "Change icon only": {
                  "value": {
                    "Icon": "star"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Delete a tag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/{id}/links": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Gets a tag together with the resources linked to it, grouped by resource type.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tag and its linked items, grouped by type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "The tag does not exist or belongs to another user."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/for-entity": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Lists the user's tags for a specific resource, flagging which ones are already applied to it.\r\nUsed to render a tag picker for an entity.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "linkId",
            "in": "query",
            "description": "The resource's unique identifier (GUID).",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "linkType",
            "in": "query",
            "description": "The resource type (see ResourceType — e.g. connector, list, favorite).",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user's tags, each flagged with whether it is already linked to the resource.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfTagForEntityResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/by-link-type": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Lists every resource of a given type that the user has tagged, one row per linked resource.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "linkType",
            "in": "query",
            "description": "The resource type to list tagged items for (see ResourceType).",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tagged resources of the requested type.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfTagByLinkTypeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/{id}/link": {
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Links a resource (connector, list, favorite, etc.) to the tag.",
        "description": "Idempotent: linking an already-linked resource is a no-op and still returns 200.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The resource to link.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTagLinkRequest"
              },
              "examples": {
                "Link a list": {
                  "value": {"LinkId":"7c9e6679-7425-40de-944b-e07fc1f90ae7","LinkType":2}
                },
                "Link a connector": {
                  "value": {"LinkId":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","LinkType":1}
                },
                "Link a favorite": {
                  "value": {"LinkId":"a1b2c3d4-1111-2222-3333-444455556666","LinkType":5}
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTagLinkRequest"
              },
              "examples": {
                "Link a list": {
                  "value": {"LinkId":"7c9e6679-7425-40de-944b-e07fc1f90ae7","LinkType":2}
                },
                "Link a connector": {
                  "value": {"LinkId":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","LinkType":1}
                },
                "Link a favorite": {
                  "value": {"LinkId":"a1b2c3d4-1111-2222-3333-444455556666","LinkType":5}
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostTagLinkRequest"
              },
              "examples": {
                "Link a list": {
                  "value": {"LinkId":"7c9e6679-7425-40de-944b-e07fc1f90ae7","LinkType":2}
                },
                "Link a connector": {
                  "value": {"LinkId":"3f2504e0-4f89-41d3-9a0c-0305e82c3301","LinkType":1}
                },
                "Link a favorite": {
                  "value": {"LinkId":"a1b2c3d4-1111-2222-3333-444455556666","LinkType":5}
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The resource is linked to the tag."
          },
          "400": {
            "description": "LinkId is missing, or the link type is unsupported."
          },
          "404": {
            "description": "The tag or the target resource does not exist or is not accessible."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/{id}/link/{linkId}": {
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Removes the link between a resource and the tag.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkId",
            "in": "path",
            "description": "The linked resource's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "linkType",
            "in": "query",
            "description": "The resource type of the linked item (see ResourceType).",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The link was removed (or did not exist)."
          },
          "404": {
            "description": "The tag does not exist or belongs to another user."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/tag/{id}/favorite": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get a list of favorites for a tag",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The tag's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite links for the tag.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSimpleFavoriteResponse"
                }
              }
            }
          },
          "404": {
            "description": "The tag does not exist or belongs to another user."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/team/{id}/member": {
      "get": {
        "tags": [
          "Teams"
        ],
        "summary": "Get a list of members for a team",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The team's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The team's members.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfTeamMemberResponse"
                }
              }
            }
          },
          "404": {
            "description": "No team exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/team": {
      "get": {
        "tags": [
          "Teams"
        ],
        "summary": "Get a list of teams",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfTeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Teams"
        ],
        "summary": "Add a new team",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/team/{id}": {
      "get": {
        "tags": [
          "Teams"
        ],
        "summary": "Get a single team",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Teams"
        ],
        "summary": "Update a team",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Teams"
        ],
        "summary": "Delete a team",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/team-member/{id}": {
      "get": {
        "tags": [
          "Teams"
        ],
        "summary": "Get a single team member",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamMemberResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Teams"
        ],
        "summary": "Update a team member",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamMemberRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamMemberResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Teams"
        ],
        "summary": "Delete a team member",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/team-member": {
      "post": {
        "tags": [
          "Teams"
        ],
        "summary": "Add a new team member",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamMemberRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamMemberRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteTeamMemberRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeamMemberResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-client-instruction/{id}": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a single MCP tool parameter client instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The client instruction's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested client instruction.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterClientInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No client instruction exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Update a MCP tool parameter client instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterClientInstructionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterClientInstructionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterClientInstructionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterClientInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Delete a MCP tool parameter client instruction",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-client-instruction": {
      "post": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Add a new MCP tool parameter client instruction",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterClientInstructionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterClientInstructionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterClientInstructionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterClientInstructionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter/{id}": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Gets an MCP tool parameter by id, including its list items, sort fields, validations and client instructions.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Partially updates an MCP tool parameter (name, description, required flag and apply-type-specific settings).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolParameterRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "customer_name"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "The customer name to search for (partial matches allowed)."
                  }
                },
                "Make required": {
                  "value": {
                    "Required": true
                  }
                },
                "Change data type": {
                  "value": {
                    "FieldType": "Integer"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolParameterRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "customer_name"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "The customer name to search for (partial matches allowed)."
                  }
                },
                "Make required": {
                  "value": {
                    "Required": true
                  }
                },
                "Change data type": {
                  "value": {
                    "FieldType": "Integer"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolParameterRequest"
              },
              "examples": {
                "Rename": {
                  "value": {
                    "Name": "customer_name"
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "The customer name to search for (partial matches allowed)."
                  }
                },
                "Make required": {
                  "value": {
                    "Required": true
                  }
                },
                "Change data type": {
                  "value": {
                    "FieldType": "Integer"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The parameter was updated."
          },
          "400": {
            "description": "A supplied value is invalid (e.g. a field/restriction type mismatch)."
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Deletes an MCP tool parameter and its list items, sort fields, validations and client instructions.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter was deleted."
          },
          "400": {
            "description": "The parameter is referenced by a restriction or action field and cannot be deleted."
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter/{id}/list-item": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a list of list items for an MCP tool parameter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter's list items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolParameterListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter/{id}/sort-field": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a list of sort fields for an MCP tool parameter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter's sort fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolParameterSortFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter/{id}/validation": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a list of validations for an MCP tool parameter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter's validations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolParameterValidationResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter/{id}/client-instruction": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a list of client instructions for an MCP tool parameter",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The parameter's client instructions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolParameterClientInstructionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter": {
      "post": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Adds a parameter to an MCP tool.",
        "description": "Required fields and supported apply types vary by the tool's type (entity, action, file, run-script); the apply type determines whether the parameter binds to a field, variable, max-records, company, sort, response option, etc.",
        "requestBody": {
          "description": "The parameter to create. McpToolId, Name, Description and ApplyType are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolParameterRequest"
              },
              "examples": {
                "Text input (string)": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "customer_name",
                    "FieldType": "String",
                    "ApplyType": "None",
                    "Description": "The customer name to search for.",
                    "Required": true
                  }
                },
                "Whole number input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "max_amount",
                    "FieldType": "Integer",
                    "ApplyType": "None",
                    "Description": "Only return orders at or below this amount."
                  }
                },
                "Date input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "order_date",
                    "FieldType": "Date",
                    "ApplyType": "None",
                    "Description": "Filter to orders placed on this date."
                  }
                },
                "Yes/No input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "include_closed",
                    "FieldType": "YesNo",
                    "ApplyType": "None",
                    "Description": "Whether to include closed orders."
                  }
                },
                "Choice list (enum) with items": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "status",
                    "FieldType": "Enum",
                    "ApplyType": "None",
                    "Description": "The order status to filter by.",
                    "ListItems": [
                      {
                        "Key": "Open",
                        "Value": "1"
                      },
                      {
                        "Key": "Closed",
                        "Value": "2"
                      }
                    ]
                  }
                },
                "Entity field filter": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "customer_id",
                    "ApplyType": "Field",
                    "EntityFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "Description": "Restrict results to this customer.",
                    "RestrictionType": "Equals"
                  }
                },
                "Entity variable": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "region",
                    "ApplyType": "Variable",
                    "EntityVariableId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Description": "Value supplied to the entity's variable."
                  }
                },
                "Max records": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "limit",
                    "ApplyType": "MaxRecords",
                    "Description": "Maximum number of records to return."
                  }
                },
                "Company selector": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "company",
                    "ApplyType": "Company",
                    "Description": "The company to run the query against."
                  }
                },
                "Sort field": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "sort_by",
                    "ApplyType": "SortField",
                    "Description": "Which field to sort the results by.",
                    "SortFields": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                    ]
                  }
                },
                "Action field": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "status",
                    "ApplyType": "ActionField",
                    "Description": "Value written to the action's Status field.",
                    "Required": true,
                    "ActionField": "Status"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolParameterRequest"
              },
              "examples": {
                "Text input (string)": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "customer_name",
                    "FieldType": "String",
                    "ApplyType": "None",
                    "Description": "The customer name to search for.",
                    "Required": true
                  }
                },
                "Whole number input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "max_amount",
                    "FieldType": "Integer",
                    "ApplyType": "None",
                    "Description": "Only return orders at or below this amount."
                  }
                },
                "Date input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "order_date",
                    "FieldType": "Date",
                    "ApplyType": "None",
                    "Description": "Filter to orders placed on this date."
                  }
                },
                "Yes/No input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "include_closed",
                    "FieldType": "YesNo",
                    "ApplyType": "None",
                    "Description": "Whether to include closed orders."
                  }
                },
                "Choice list (enum) with items": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "status",
                    "FieldType": "Enum",
                    "ApplyType": "None",
                    "Description": "The order status to filter by.",
                    "ListItems": [
                      {
                        "Key": "Open",
                        "Value": "1"
                      },
                      {
                        "Key": "Closed",
                        "Value": "2"
                      }
                    ]
                  }
                },
                "Entity field filter": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "customer_id",
                    "ApplyType": "Field",
                    "EntityFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "Description": "Restrict results to this customer.",
                    "RestrictionType": "Equals"
                  }
                },
                "Entity variable": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "region",
                    "ApplyType": "Variable",
                    "EntityVariableId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Description": "Value supplied to the entity's variable."
                  }
                },
                "Max records": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "limit",
                    "ApplyType": "MaxRecords",
                    "Description": "Maximum number of records to return."
                  }
                },
                "Company selector": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "company",
                    "ApplyType": "Company",
                    "Description": "The company to run the query against."
                  }
                },
                "Sort field": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "sort_by",
                    "ApplyType": "SortField",
                    "Description": "Which field to sort the results by.",
                    "SortFields": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                    ]
                  }
                },
                "Action field": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "status",
                    "ApplyType": "ActionField",
                    "Description": "Value written to the action's Status field.",
                    "Required": true,
                    "ActionField": "Status"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolParameterRequest"
              },
              "examples": {
                "Text input (string)": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "customer_name",
                    "FieldType": "String",
                    "ApplyType": "None",
                    "Description": "The customer name to search for.",
                    "Required": true
                  }
                },
                "Whole number input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "max_amount",
                    "FieldType": "Integer",
                    "ApplyType": "None",
                    "Description": "Only return orders at or below this amount."
                  }
                },
                "Date input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "order_date",
                    "FieldType": "Date",
                    "ApplyType": "None",
                    "Description": "Filter to orders placed on this date."
                  }
                },
                "Yes/No input": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "include_closed",
                    "FieldType": "YesNo",
                    "ApplyType": "None",
                    "Description": "Whether to include closed orders."
                  }
                },
                "Choice list (enum) with items": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "status",
                    "FieldType": "Enum",
                    "ApplyType": "None",
                    "Description": "The order status to filter by.",
                    "ListItems": [
                      {
                        "Key": "Open",
                        "Value": "1"
                      },
                      {
                        "Key": "Closed",
                        "Value": "2"
                      }
                    ]
                  }
                },
                "Entity field filter": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "customer_id",
                    "ApplyType": "Field",
                    "EntityFieldId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "Description": "Restrict results to this customer.",
                    "RestrictionType": "Equals"
                  }
                },
                "Entity variable": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "region",
                    "ApplyType": "Variable",
                    "EntityVariableId": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
                    "Description": "Value supplied to the entity's variable."
                  }
                },
                "Max records": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "limit",
                    "ApplyType": "MaxRecords",
                    "Description": "Maximum number of records to return."
                  }
                },
                "Company selector": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "company",
                    "ApplyType": "Company",
                    "Description": "The company to run the query against."
                  }
                },
                "Sort field": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "sort_by",
                    "ApplyType": "SortField",
                    "Description": "Which field to sort the results by.",
                    "SortFields": [
                      "a1b2c3d4-1111-2222-3333-444455556666",
                      "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
                    ]
                  }
                },
                "Action field": {
                  "value": {
                    "McpToolId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "Name": "status",
                    "ApplyType": "ActionField",
                    "Description": "Value written to the action's Status field.",
                    "Required": true,
                    "ActionField": "Status"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is invalid for the tool/apply type, or a duplicate parameter exists."
          },
          "404": {
            "description": "The MCP tool does not exist, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-list-item/{id}": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a single MCP tool parameter list item",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Update a MCP tool parameter list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterListItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Delete a MCP tool parameter list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-list-item": {
      "post": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Add a new MCP tool parameter list item",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterListItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-sort-field/{id}": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Get a single MCP tool parameter sort field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The sort field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested sort field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterSortFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No sort field exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Update a MCP tool parameter sort field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterSortFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterSortFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterSortFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterSortFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Delete a MCP tool parameter sort field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-sort-field": {
      "post": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Add a new MCP tool parameter sort field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterSortFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterSortFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolParameterSortFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterSortFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-validation/{id}": {
      "get": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Gets an MCP tool parameter validation by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The validation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested validation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterValidationResponse"
                }
              }
            }
          },
          "404": {
            "description": "No validation exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Partially updates an MCP tool parameter validation (error message and type-specific bounds).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The validation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolParameterValidationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolParameterValidationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolParameterValidationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The validation was updated."
          },
          "404": {
            "description": "No validation exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Deletes an MCP tool parameter validation.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The validation's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The validation was deleted."
          },
          "404": {
            "description": "No validation exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-parameter-validation": {
      "post": {
        "tags": [
          "Tool parameters"
        ],
        "summary": "Adds a validation rule to an MCP tool parameter (e.g. min/max value, length, regex or date range).",
        "requestBody": {
          "description": "The validation to create. McpToolParameterId, Type and ErrorMessage are required; type-specific bounds (min/max value or date) must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolParameterValidationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolParameterValidationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostMcpToolParameterValidationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created validation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolParameterValidationResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field for the validation type is missing."
          },
          "404": {
            "description": "The parameter does not exist, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-variable/{id}": {
      "get": {
        "tags": [
          "Tool variables"
        ],
        "summary": "Get a single MCP tool variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No variable exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tool variables"
        ],
        "summary": "Update a MCP tool variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolVariableRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tool variables"
        ],
        "summary": "Delete a MCP tool variable",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool-variable": {
      "post": {
        "tags": [
          "Tool variables"
        ],
        "summary": "Add a new MCP tool variable",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolVariableRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolVariableRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteMcpToolVariableRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Gets an MCP tool by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested MCP tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/McpToolResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Tools"
        ],
        "summary": "Partially updates an MCP tool (name, description, title, status and type-specific settings).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolRequest"
              },
              "examples": {
                "Rename / retitle": {
                  "value": {
                    "Name": "list_sales_orders",
                    "Title": "List Sales Orders"
                  }
                },
                "Raise record cap": {
                  "value": {
                    "MaxRecords": 1000
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Returns sales orders with optional customer and date filters."
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolRequest"
              },
              "examples": {
                "Rename / retitle": {
                  "value": {
                    "Name": "list_sales_orders",
                    "Title": "List Sales Orders"
                  }
                },
                "Raise record cap": {
                  "value": {
                    "MaxRecords": 1000
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Returns sales orders with optional customer and date filters."
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMcpToolRequest"
              },
              "examples": {
                "Rename / retitle": {
                  "value": {
                    "Name": "list_sales_orders",
                    "Title": "List Sales Orders"
                  }
                },
                "Raise record cap": {
                  "value": {
                    "MaxRecords": 1000
                  }
                },
                "Update description": {
                  "value": {
                    "Description": "Returns sales orders with optional customer and date filters."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The MCP tool was updated."
          },
          "400": {
            "description": "A supplied value is invalid or too long."
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Tools"
        ],
        "summary": "Deletes an MCP tool and its dependent data.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The MCP tool was deleted."
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/parameter": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of parameters for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "applyType",
            "in": "query",
            "description": "Optional filter on the parameter's apply type.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "required",
            "in": "query",
            "description": "Optional filter on whether the parameter is required.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/response-field": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of response fields for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's response fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolResponseFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/response-sort": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of response sorts for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's response sorts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolResponseSortResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/restriction": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of restrictions for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's restrictions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolRestrictionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/action-field": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of action fields for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's action fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolActionFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/company": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of companies for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's companies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolCompanyResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/variable": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of variables for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's variables.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/client-instruction": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of client instructions for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's client instructions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolClientInstructionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/mcp-tool/{id}/history": {
      "get": {
        "tags": [
          "Tools"
        ],
        "summary": "Get a list of history entries for an MCP tool",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The MCP tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tool's history.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfMcpToolHistoryResponse"
                }
              }
            }
          },
          "404": {
            "description": "No MCP tool exists with that id, or its server belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/external-user": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a list of external users",
        "description": "Filter by any column with `?Column=value`, range filters `?Column.gt=`/`?Column.lt=`,\r\nor multi-value `IN` filters via comma-separated values. Use `limit`/`offset` to page\r\nand `sort`/`order` to sort.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A paginated envelope of records.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfExternalUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Add a new external user",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteExternalUserRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteExternalUserRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteExternalUserRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/external-user/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a single external user",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalUserResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Update a external user",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteExternalUserRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteExternalUserRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteExternalUserRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalUserResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Delete a external user",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/me": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets the current user's profile, display preferences and active account.",
        "description": "Returns user details (or the name, for API users) along with display preferences such as paging, theme, locale and time zone, plus the currently selected account.",
        "responses": {
          "200": {
            "description": "The authenticated user's profile and preferences.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Users"
        ],
        "summary": "Updates the current user's display preferences and, for API users, their name.",
        "requestBody": {
          "description": "The subset of preferences to change (paging, page size, theme, time zone, notifications, locale, name). Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchMeRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated profile and preferences.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied value was invalid (e.g. the name exceeds 200 characters)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/me/role": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Lists the security roles assigned to the current user.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The current user's security roles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSecurityRoleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/me/feature": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Lists the feature permissions in effect for the current user.",
        "description": "The effective set: features granted by the user's security roles (assigned directly or through teams) intersected with the account's subscription features. This is the same set used for API feature enforcement, so clients can gate UI on it.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The feature permission names, sorted alphabetically.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfString"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/me/team": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Lists the teams the current user belongs to.",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The teams the current user is a member of.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSimpleTeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/user": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a list of users",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The active users belonging to the account.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSharedUser"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/user/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Gets a single user (regular or API user) by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The user's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SharedUser"
                }
              }
            }
          },
          "404": {
            "description": "No user exists with that id."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/user/{id}/role": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a list of roles for a user",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The user's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user's security roles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSecurityRoleResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/user/{id}/team": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a list of teams for a user",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The user's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The teams the user is a member of.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfSimpleTeamResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-variable/{id}": {
      "get": {
        "tags": [
          "Variables"
        ],
        "summary": "Gets an entity variable by id, including its list items when it is displayed as a list.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityVariableResponse"
                }
              }
            }
          },
          "404": {
            "description": "No variable exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Variables"
        ],
        "summary": "Partially updates an entity variable.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityVariableModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityVariableModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEntityVariableModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "A supplied value is invalid or too long, the name is in use, or a referenced field/entity is invalid."
          },
          "404": {
            "description": "No variable exists with that id, or the caller cannot access its entity."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Variables"
        ],
        "summary": "Deletes an entity variable and its list items.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The variable was deleted."
          },
          "404": {
            "description": "No variable exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-variable/{id}/list-item": {
      "get": {
        "tags": [
          "Variables"
        ],
        "summary": "Get a list of list items for an entity variable",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The entity variable's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The variable's list items.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfEntityVariableListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No variable exists with that id, or the caller cannot access its entity."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-variable": {
      "post": {
        "tags": [
          "Variables"
        ],
        "summary": "Creates an entity variable (user or calculated), validating any lookup and list-item field references.",
        "requestBody": {
          "description": "The variable to create. EntityId, Name and FieldType are required; calculated variables require a script.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityVariableModel"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityVariableModel"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostEntityVariableModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created variable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityVariableResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, a value is invalid or too long, the name is in use, or a referenced field/entity is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-variable-list-item/{id}": {
      "get": {
        "tags": [
          "Variables"
        ],
        "summary": "Get a single entity variable list item",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityVariableListItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Variables"
        ],
        "summary": "Update a entity variable list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityVariableListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityVariableListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityVariableListItemRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityVariableListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Variables"
        ],
        "summary": "Delete a entity variable list item",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/entity-variable-list-item": {
      "post": {
        "tags": [
          "Variables"
        ],
        "summary": "Add a new entity variable list item",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityVariableListItemRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityVariableListItemRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteEntityVariableListItemRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityVariableListItemResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Gets a widget AI attachment by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Partially updates a widget AI attachment (name, entity, company and max records).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetAiAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetAiAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetAiAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The attachment was updated."
          },
          "400": {
            "description": "A supplied value is too long."
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Deletes a widget AI attachment along with its fields, sorts and parameters.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment was deleted."
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment/{id}/field": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a list of fields for a widget AI attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetAiAttachmentFieldResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment/{id}/sort": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a list of sorts for a widget AI attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's sort fields.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetAiAttachmentSortResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment/{id}/parameter": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a list of parameters for a widget AI attachment",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetAiAttachmentParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment": {
      "post": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Adds an AI attachment to a widget.",
        "requestBody": {
          "description": "The attachment to create. WidgetId, Name and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created attachment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, or the name is too long."
          },
          "404": {
            "description": "The widget does not exist, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment-field/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a single widget AI attachment field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment field's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No attachment field exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Update a widget AI attachment field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentFieldRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Delete a widget AI attachment field",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment-field": {
      "post": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Add a new widget AI attachment field",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentFieldRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentFieldRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentFieldRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentFieldResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment-parameter/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Gets a widget AI attachment parameter by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment parameter's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested parameter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No parameter exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment-sort/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a single widget AI attachment sort",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The attachment sort's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment sort.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No attachment sort exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Update a widget AI attachment sort",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentSortRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Delete a widget AI attachment sort",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-attachment-sort": {
      "post": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Add a new widget AI attachment sort",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentSortRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentSortRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiAttachmentSortRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiAttachmentSortResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-favorite-attachment/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Gets a widget AI favorite attachment by id.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested attachment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Removes an attachment from a widget AI favorite.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The favorite attachment's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The favorite attachment was deleted."
          },
          "404": {
            "description": "No attachment exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-favorite-attachment": {
      "post": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Links a widget AI attachment to a widget AI favorite.",
        "requestBody": {
          "description": "The favorite attachment to create. WidgetAiFavoriteId is required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiFavoriteAttachmentRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiFavoriteAttachmentRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiFavoriteAttachmentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created favorite attachment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing."
          },
          "404": {
            "description": "The AI favorite or its widget does not exist, or belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-favorite/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a single widget AI favorite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI favorite.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No AI favorite exists with that id, or its widget belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Update a widget AI favorite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiFavoriteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiFavoriteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiFavoriteRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Delete a widget AI favorite",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-favorite/{id}/attachment": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a list of attachments for a widget AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's attachments.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetAiFavoriteAttachmentResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No AI favorite exists with that id, or its widget belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-favorite/{id}/parameter": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Get a list of parameters for a widget AI favorite",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI favorite's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI favorite's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetAiFavoriteParameterResponse"
                }
              }
            }
          },
          "400": {
            "description": "The id is not a valid GUID."
          },
          "404": {
            "description": "No AI favorite exists with that id, or its widget belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-favorite": {
      "post": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Add a new widget AI favorite",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiFavoriteRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiFavoriteRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetAiFavoriteRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiFavoriteResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-tool/{id}": {
      "get": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Gets a widget AI tool by id, including its connector tool (and MCP tool for custom MCP tools).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested AI tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiToolResponse"
                }
              }
            }
          },
          "404": {
            "description": "No AI tool exists with that id, the connector/MCP tool is missing, or the widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Removes an AI tool from a widget.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget AI tool's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The AI tool was deleted."
          },
          "404": {
            "description": "No AI tool exists with that id, or its widget belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-ai-tool": {
      "post": {
        "tags": [
          "Widget AI settings"
        ],
        "summary": "Adds an AI tool (a connector AI tool) to a widget.",
        "requestBody": {
          "description": "Identifies the widget and the connector AI tool to add.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiToolRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiToolRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetAiToolRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created AI tool.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetAiToolResponse"
                }
              }
            }
          },
          "400": {
            "description": "The connector tool or widget does not exist, or the widget is not an AI widget."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-action/{id}": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a single widget action",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widgets"
        ],
        "summary": "Update a widget action",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetActionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widgets"
        ],
        "summary": "Delete a widget action",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-action": {
      "post": {
        "tags": [
          "Widgets"
        ],
        "summary": "Add a new widget action",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetActionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetActionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetActionRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widgets"
        ],
        "summary": "Updates a widget's display options (toggles such as show filter, show export, allow grouping, etc.).",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The widget's unique identifier (GUID).",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The options to enable or disable. Each supplied flag is added or removed; omitted flags are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetOptionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetOptionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetOptionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The widget options were updated."
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of widgets",
        "description": "All filters are optional and combine with AND.\n\nResults can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Only return widgets of this type (e.g. Application, Favorite, Cards). Accepts the name or its integer code.",
            "schema": {
              "enum": [
                "Application",
                "Favorite",
                "Shipping",
                "Summary",
                "Singleton",
                "Sidebar",
                "Dashboard",
                "Cards",
                "Form",
                "Search",
                "Image",
                "Ai",
                "File",
                "AiChat"
              ],
              "type": "string",
              "x-enumDescriptions": {
                "Application": "Entity list (application)",
                "Favorite": "Saved favorite",
                "Shipping": "Shipping",
                "Summary": "Summary",
                "Singleton": "Singleton (a single record)",
                "Sidebar": "Sidebar",
                "Dashboard": "Dashboard",
                "Cards": "Cards",
                "Form": "Form",
                "Search": "Search",
                "Image": "Image",
                "Ai": "AI prompt",
                "File": "File",
                "AiChat": "AI chat"
              }
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's widgets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Widgets"
        ],
        "summary": "Creates a widget of the requested type.",
        "description": "Required fields vary by widget type; for example AI widgets require an AI connector, model and type, and favorite widgets require a connector and entity.",
        "requestBody": {
          "description": "The widget to create. Name and Type are required.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetRequest"
              },
              "examples": {
                "Entity list widget (Application)": {
                  "value": {
                    "Name": "customers",
                    "Title": "Customers",
                    "Type": "Application",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 50,
                    "SortFieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                    "SortDirection": "Ascending"
                  }
                },
                "Favorite widget": {
                  "value": {
                    "Name": "open-orders",
                    "Title": "Open Orders",
                    "Type": "Favorite",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "Theme": "light"
                  }
                },
                "Shipping widget": {
                  "value": {
                    "Name": "shipment-status",
                    "Title": "Shipment Status",
                    "Type": "Shipping"
                  }
                },
                "Summary widget": {
                  "value": {
                    "Name": "sales-summary",
                    "Title": "Sales Summary",
                    "Type": "Summary",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Singleton widget": {
                  "value": {
                    "Name": "customer-detail",
                    "Title": "Customer",
                    "Type": "Singleton",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "DefaultItemId": "c0ffee00-1234-5678-9abc-def012345678"
                  }
                },
                "Cards widget": {
                  "value": {
                    "Name": "open-tickets",
                    "Title": "Open Tickets",
                    "Type": "Cards",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 25
                  }
                },
                "Search widget": {
                  "value": {
                    "Name": "global-search",
                    "Title": "Search",
                    "Type": "Search",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                },
                "Image widget": {
                  "value": {
                    "Name": "company-logo",
                    "Title": "Logo",
                    "Type": "Image",
                    "Description": "Static image displayed in the sidebar.",
                    "Theme": "light"
                  }
                },
                "AI widget": {
                  "value": {
                    "Name": "order-assistant",
                    "Title": "Order Assistant",
                    "Type": "Ai",
                    "AiConnectorId": "b5f8c2a1-7777-8888-9999-aabbccddeeff",
                    "AiModelId": "d4e5f6a7-2222-3333-4444-555566667777",
                    "AiPrompt": "Summarize this customer's open orders and flag anything overdue.",
                    "AiType": "Fixed"
                  }
                },
                "File widget": {
                  "value": {
                    "Name": "attachments",
                    "Title": "Attachments",
                    "Type": "File",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "FileFieldId": "11112222-3333-4444-5555-666677778888",
                    "FileNameFieldId": "99990000-aaaa-bbbb-cccc-ddddeeeeffff"
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetRequest"
              },
              "examples": {
                "Entity list widget (Application)": {
                  "value": {
                    "Name": "customers",
                    "Title": "Customers",
                    "Type": "Application",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 50,
                    "SortFieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                    "SortDirection": "Ascending"
                  }
                },
                "Favorite widget": {
                  "value": {
                    "Name": "open-orders",
                    "Title": "Open Orders",
                    "Type": "Favorite",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "Theme": "light"
                  }
                },
                "Shipping widget": {
                  "value": {
                    "Name": "shipment-status",
                    "Title": "Shipment Status",
                    "Type": "Shipping"
                  }
                },
                "Summary widget": {
                  "value": {
                    "Name": "sales-summary",
                    "Title": "Sales Summary",
                    "Type": "Summary",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Singleton widget": {
                  "value": {
                    "Name": "customer-detail",
                    "Title": "Customer",
                    "Type": "Singleton",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "DefaultItemId": "c0ffee00-1234-5678-9abc-def012345678"
                  }
                },
                "Cards widget": {
                  "value": {
                    "Name": "open-tickets",
                    "Title": "Open Tickets",
                    "Type": "Cards",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 25
                  }
                },
                "Search widget": {
                  "value": {
                    "Name": "global-search",
                    "Title": "Search",
                    "Type": "Search",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                },
                "Image widget": {
                  "value": {
                    "Name": "company-logo",
                    "Title": "Logo",
                    "Type": "Image",
                    "Description": "Static image displayed in the sidebar.",
                    "Theme": "light"
                  }
                },
                "AI widget": {
                  "value": {
                    "Name": "order-assistant",
                    "Title": "Order Assistant",
                    "Type": "Ai",
                    "AiConnectorId": "b5f8c2a1-7777-8888-9999-aabbccddeeff",
                    "AiModelId": "d4e5f6a7-2222-3333-4444-555566667777",
                    "AiPrompt": "Summarize this customer's open orders and flag anything overdue.",
                    "AiType": "Fixed"
                  }
                },
                "File widget": {
                  "value": {
                    "Name": "attachments",
                    "Title": "Attachments",
                    "Type": "File",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "FileFieldId": "11112222-3333-4444-5555-666677778888",
                    "FileNameFieldId": "99990000-aaaa-bbbb-cccc-ddddeeeeffff"
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetRequest"
              },
              "examples": {
                "Entity list widget (Application)": {
                  "value": {
                    "Name": "customers",
                    "Title": "Customers",
                    "Type": "Application",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 50,
                    "SortFieldId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
                    "SortDirection": "Ascending"
                  }
                },
                "Favorite widget": {
                  "value": {
                    "Name": "open-orders",
                    "Title": "Open Orders",
                    "Type": "Favorite",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 100,
                    "Theme": "light"
                  }
                },
                "Shipping widget": {
                  "value": {
                    "Name": "shipment-status",
                    "Title": "Shipment Status",
                    "Type": "Shipping"
                  }
                },
                "Summary widget": {
                  "value": {
                    "Name": "sales-summary",
                    "Title": "Sales Summary",
                    "Type": "Summary",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
                  }
                },
                "Singleton widget": {
                  "value": {
                    "Name": "customer-detail",
                    "Title": "Customer",
                    "Type": "Singleton",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "DefaultItemId": "c0ffee00-1234-5678-9abc-def012345678"
                  }
                },
                "Cards widget": {
                  "value": {
                    "Name": "open-tickets",
                    "Title": "Open Tickets",
                    "Type": "Cards",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "MaxRecords": 25
                  }
                },
                "Search widget": {
                  "value": {
                    "Name": "global-search",
                    "Title": "Search",
                    "Type": "Search",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666"
                  }
                },
                "Image widget": {
                  "value": {
                    "Name": "company-logo",
                    "Title": "Logo",
                    "Type": "Image",
                    "Description": "Static image displayed in the sidebar.",
                    "Theme": "light"
                  }
                },
                "AI widget": {
                  "value": {
                    "Name": "order-assistant",
                    "Title": "Order Assistant",
                    "Type": "Ai",
                    "AiConnectorId": "b5f8c2a1-7777-8888-9999-aabbccddeeff",
                    "AiModelId": "d4e5f6a7-2222-3333-4444-555566667777",
                    "AiPrompt": "Summarize this customer's open orders and flag anything overdue.",
                    "AiType": "Fixed"
                  }
                },
                "File widget": {
                  "value": {
                    "Name": "attachments",
                    "Title": "Attachments",
                    "Type": "File",
                    "ConnectorId": "a1b2c3d4-1111-2222-3333-444455556666",
                    "EntityId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
                    "FileFieldId": "11112222-3333-4444-5555-666677778888",
                    "FileNameFieldId": "99990000-aaaa-bbbb-cccc-ddddeeeeffff"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created widget.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetResponse"
                }
              }
            }
          },
          "400": {
            "description": "A required field is missing, the name is in use, or a referenced resource is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget/{id}": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Gets a widget by id, with its type-specific content, parameters and options.",
        "description": "Depending on the widget type, includes entities (application), child widgets (sidebar), or details (cards/favorite).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested widget.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetResponse"
                }
              }
            }
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widgets"
        ],
        "summary": "Partially updates a widget's settings.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change (presentation, data source, AI and layout settings). Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetRequest"
              },
              "examples": {
                "Retitle": {
                  "value": {
                    "Title": "Open Sales Orders"
                  }
                },
                "Change theme": {
                  "value": {
                    "Theme": "dark"
                  }
                },
                "Resize": {
                  "value": {
                    "Height": 400,
                    "Width": 600
                  }
                }
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetRequest"
              },
              "examples": {
                "Retitle": {
                  "value": {
                    "Title": "Open Sales Orders"
                  }
                },
                "Change theme": {
                  "value": {
                    "Theme": "dark"
                  }
                },
                "Resize": {
                  "value": {
                    "Height": 400,
                    "Width": 600
                  }
                }
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetRequest"
              },
              "examples": {
                "Retitle": {
                  "value": {
                    "Title": "Open Sales Orders"
                  }
                },
                "Change theme": {
                  "value": {
                    "Theme": "dark"
                  }
                },
                "Resize": {
                  "value": {
                    "Height": 400,
                    "Width": 600
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The widget was updated."
          },
          "400": {
            "description": "A supplied value is too long."
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widgets"
        ],
        "summary": "Deletes a widget.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The widget was deleted."
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget/{id}/parameter": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of parameters for a widget",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The widget's parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetParameterResponse"
                }
              }
            }
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget/{id}/detail": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of details for a widget",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The widget's detail views.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget/{id}/action": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of actions for a widget",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The widget's actions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "No widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-detail/{id}": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a single widget detail",
        "description": "Supports `?expand=children.grandchildren` for inline child expansion.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetDetailResponse"
                }
              }
            }
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widgets"
        ],
        "summary": "Update a widget detail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted (null) fields are left untouched.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetDetailRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetDetailRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetDetailRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The updated record.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed for one or more supplied fields."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widgets"
        ],
        "summary": "Delete a widget detail",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The record's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The record was deleted."
          },
          "400": {
            "description": "The record cannot be deleted (e.g. dependent records still reference it)."
          },
          "404": {
            "description": "No record exists with that id, or the caller cannot access it."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-detail": {
      "post": {
        "tags": [
          "Widgets"
        ],
        "summary": "Add a new widget detail",
        "requestBody": {
          "description": "The fields for the new record. Fields marked required-on-create must be supplied.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetDetailRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetDetailRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WriteWidgetDetailRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "The created record. The `Location` header points to it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetDetailResponse"
                }
              }
            }
          },
          "400": {
            "description": "Validation failed (e.g. a required field is missing or a value is out of range)."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-form": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of form widgets",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's form widgets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetFormResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Widgets"
        ],
        "summary": "Creates a form widget, optionally bound to an action.",
        "requestBody": {
          "description": "The form widget to create. Name is required and must be unique within the account.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetFormRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetFormRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetFormRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created form widget.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetFormResponse"
                }
              }
            }
          },
          "400": {
            "description": "Name is missing, too long, in use, or the action is invalid."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-form/{id}": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Gets a form widget by id, with its options and action.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The form widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested form widget.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetFormResponse"
                }
              }
            }
          },
          "404": {
            "description": "No form widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widgets"
        ],
        "summary": "Partially updates a form widget (name, title, description, locale and action).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The form widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetFormRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetFormRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetFormRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The form widget was updated."
          },
          "400": {
            "description": "A supplied value is too long, or the action is invalid."
          },
          "404": {
            "description": "No form widget exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widgets"
        ],
        "summary": "Deletes a form widget.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The form widget's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The form widget was deleted."
          },
          "404": {
            "description": "No form widget exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-group": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of widget groups",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account's widget groups.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Widgets"
        ],
        "summary": "Creates a widget group (sidebar widget).",
        "requestBody": {
          "description": "The widget group to create. Name is required and must be unique within the account.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetGroupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PostWidgetGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The created widget group.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetGroupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Name is missing, too long, or already in use."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-group/{id}": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Gets a widget group by id, including its options and tabs with their child widgets.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget group's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The requested widget group.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WidgetGroupResponse"
                }
              }
            }
          },
          "404": {
            "description": "No widget group exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Widgets"
        ],
        "summary": "Partially updates a widget group (name, title, description and locale).",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget group's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The subset of fields to change. Omitted fields are left unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetGroupRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetGroupRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PatchWidgetGroupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The widget group was updated."
          },
          "400": {
            "description": "A supplied value is too long."
          },
          "404": {
            "description": "No widget group exists with that id, or it belongs to another account."
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Widgets"
        ],
        "summary": "Deletes a widget group.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget group's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The widget group was deleted."
          },
          "404": {
            "description": "No widget group exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/widget-group/{id}/children": {
      "get": {
        "tags": [
          "Widgets"
        ],
        "summary": "Get a list of child widgets for a widget group",
        "description": "Results can also be filtered by any field: exact match `?Field=value`, substring match `?Field.contains=value`, range filters `?Field.gt=value` / `?Field.lt=value`, and multi-value IN filters via comma-separated values `?Field=a,b,c`.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The widget group's unique identifier (GUID).",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return (1–1000, default 100).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of records to skip, for pagination (default 0).",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Field to sort by. Defaults to the resource's natural sort.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "order",
            "in": "query",
            "description": "Sort direction: 'asc' (default) or 'desc'.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The group's child widgets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListResponseOfWidgetGroupItemResponse"
                }
              }
            }
          },
          "404": {
            "description": "No widget group exists with that id, or it belongs to another account."
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AccountResponse": {
        "type": "object",
        "properties": {
          "AccountId": {
            "type": "string",
            "description": "The account's unique identifier.",
            "format": "uuid",
            "example": "9b1c3f4a-2d6e-4a8b-9c0d-1e2f3a4b5c6d"
          },
          "Name": {
            "type": "string",
            "description": "The account's display name.",
            "nullable": true,
            "example": "Contoso Ltd"
          },
          "Currency": {
            "type": "string",
            "description": "The account's currency code.",
            "nullable": true,
            "example": "USD"
          }
        },
        "additionalProperties": false
      },
      "ActionDefaultValueResponse": {
        "type": "object",
        "properties": {
          "ActionDefaultValueId": {
            "type": "string",
            "description": "The default value's unique identifier.",
            "format": "uuid",
            "example": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b"
          },
          "ActionDefaultValueSetId": {
            "type": "string",
            "description": "Identifier of the default value set this value belongs to.",
            "format": "uuid",
            "example": "1a2b3c4d-5e6f-4071-8a9b-0c1d2e3f4a5b"
          },
          "ActionFieldId": {
            "type": "string",
            "description": "Identifier of the action field this default value applies to.",
            "format": "uuid",
            "example": "7c8d9e0f-1a2b-4c3d-8e4f-5a6b7c8d9e0f"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the default value is resolved: 0 = None, 1 = Constant, 2 = Field, 3 = Global variable, 4 = Date, 5 = URL parameter, 6 = Environment, 7 = Lookup, 8 = Filter variable, 9 = Parent action return, 11 = Master action.",
            "format": "int32",
            "example": 1
          },
          "Value": {
            "type": "string",
            "description": "The default value, interpreted according to ValueType.",
            "nullable": true,
            "example": "100"
          },
          "ParentActionId": {
            "type": "string",
            "description": "Identifier of the parent action whose return value supplies this default, when ValueType is parent action return.",
            "format": "uuid",
            "nullable": true,
            "example": "2b3c4d5e-6f70-4182-9a0b-1c2d3e4f5a6b"
          },
          "WidgetEnvironmentId": {
            "type": "string",
            "description": "Identifier of the widget environment used to resolve this default, when ValueType is environment.",
            "format": "uuid",
            "nullable": true,
            "example": "3c4d5e6f-7081-4293-8a1b-2c3d4e5f6a7b"
          }
        },
        "additionalProperties": false
      },
      "ActionFieldListItemResponse": {
        "type": "object",
        "properties": {
          "ActionFieldListItemId": {
            "type": "string",
            "description": "The list item's unique identifier.",
            "format": "uuid",
            "example": "8d9e0f1a-2b3c-4d5e-8f6a-7b8c9d0e1f2a"
          },
          "Label": {
            "type": "string",
            "description": "The text shown for this list item.",
            "nullable": true,
            "example": "Active"
          },
          "Value": {
            "type": "string",
            "description": "The underlying value submitted when this list item is selected.",
            "nullable": true,
            "example": "1"
          }
        },
        "additionalProperties": false
      },
      "ActionFieldResponse": {
        "type": "object",
        "properties": {
          "ActionFieldId": {
            "type": "string",
            "description": "The action field's unique identifier.",
            "format": "uuid",
            "example": "9e0f1a2b-3c4d-4e5f-8a6b-7c8d9e0f1a2b"
          },
          "Label": {
            "type": "string",
            "description": "The field's display label on the action form.",
            "nullable": true,
            "example": "Customer Name"
          },
          "FormFieldType": {
            "type": "integer",
            "description": "Integer code for the field's data type, from the Popdock field-type catalog: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 18 = Text, 26 = Date and time.",
            "format": "int32",
            "example": 1
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the field is hidden on the action form.",
            "example": false
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the field must be supplied a value.",
            "example": true
          },
          "ReadOnly": {
            "type": "boolean",
            "description": "Whether the field is displayed as read-only and cannot be edited.",
            "example": false
          },
          "SortPosition": {
            "type": "integer",
            "description": "The field's ordering position on the form.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "UseLookup": {
            "type": "boolean",
            "description": "Whether the field uses a lookup to populate its value.",
            "example": true
          },
          "LookupEntityId": {
            "type": "string",
            "description": "Identifier of the entity that supplies the lookup values. Populated only when UseLookup is true.",
            "format": "uuid",
            "nullable": true,
            "example": "0a1b2c3d-4e5f-4061-8a7b-8c9d0e1f2a3b"
          },
          "LookupValueFieldId": {
            "type": "string",
            "description": "Identifier of the lookup entity field that provides the stored value. Populated only when UseLookup is true.",
            "format": "uuid",
            "nullable": true,
            "example": "1b2c3d4e-5f60-4172-9a8b-9c0d1e2f3a4b"
          },
          "LookupDisplayFieldId": {
            "type": "string",
            "description": "Identifier of the lookup entity field that provides the displayed text. Populated only when UseLookup is true.",
            "format": "uuid",
            "nullable": true,
            "example": "2c3d4e5f-6071-4283-8a9b-0c1d2e3f4a5b"
          },
          "LookupName": {
            "type": "string",
            "description": "Display name of the lookup. Populated only when UseLookup is true.",
            "nullable": true,
            "example": "Customers"
          },
          "LookupId": {
            "type": "string",
            "description": "Identifier of the lookup configuration. Populated only when UseLookup is true.",
            "format": "uuid",
            "nullable": true,
            "example": "3d4e5f60-7182-4394-8a0b-1c2d3e4f5a6b"
          },
          "ConnectorActionField": {
            "type": "string",
            "description": "Name of the corresponding field on the connector action.",
            "nullable": true,
            "example": "CustomerName"
          },
          "ConnectorActionFieldType": {
            "type": "integer",
            "description": "Integer code for the data type of the underlying connector action field, from the Popdock field-type catalog (see FormFieldType for the code list).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ConnectorFlowFieldId": {
            "type": "string",
            "description": "Identifier of the connector flow field mapped to this action field.",
            "format": "uuid",
            "nullable": true,
            "example": "4e5f6071-8293-44a5-8a1b-2c3d4e5f6a7b"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places to display for numeric fields.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "DefaultVisible": {
            "type": "boolean",
            "description": "Whether the field is visible by default.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false
      },
      "ActionParameterResponse": {
        "type": "object",
        "properties": {
          "ActionParameterId": {
            "type": "string",
            "description": "The action parameter's unique identifier.",
            "format": "uuid",
            "example": "5f607182-9304-44b5-8a2b-3c4d5e6f7a8b"
          },
          "ParameterType": {
            "type": "integer",
            "description": "Integer code for how the parameter is sent with the request: 1 = Header, 2 = URL parameter, 3 = Body, 4 = Authentication header, 5 = Authentication URL parameter, 6 = Authentication body.",
            "format": "int32",
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The parameter's name as sent in the request.",
            "nullable": true,
            "example": "Authorization"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the parameter value is resolved: 1 = Constant, 2 = Field, 3 = Parameter.",
            "format": "int32",
            "example": 1
          },
          "Value": {
            "type": "string",
            "description": "The parameter value, interpreted according to ValueType.",
            "nullable": true,
            "example": "Bearer abc123"
          },
          "UrlEncode": {
            "type": "boolean",
            "description": "Whether the parameter value is URL-encoded before being sent.",
            "example": true
          },
          "AddWhenEmpty": {
            "type": "boolean",
            "description": "Whether the parameter is included even when its resolved value is empty.",
            "example": false
          }
        },
        "additionalProperties": false
      },
      "ActionParameterType": {
        "enum": [
          "Header",
          "UrlParameter",
          "Body",
          "AuthHeader",
          "AuthUrlParameter",
          "AuthBody"
        ],
        "type": "string",
        "description": "How an action parameter is sent with the request.\n\n- `Header` — Header\n- `UrlParameter` — URL parameter\n- `Body` — Body\n- `AuthHeader` — Authentication header\n- `AuthUrlParameter` — Authentication URL parameter\n- `AuthBody` — Authentication body\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Header": "Header",
          "UrlParameter": "URL parameter",
          "Body": "Body",
          "AuthHeader": "Authentication header",
          "AuthUrlParameter": "Authentication URL parameter",
          "AuthBody": "Authentication body"
        }
      },
      "ActionResponse": {
        "type": "object",
        "properties": {
          "ActionId": {
            "type": "string",
            "description": "The action's unique identifier.",
            "format": "uuid",
            "example": "60718293-0405-44b6-8a3b-4c5d6e7f8a9b"
          },
          "Name": {
            "type": "string",
            "description": "The action's display name.",
            "nullable": true,
            "example": "Create Sales Order"
          },
          "Description": {
            "type": "string",
            "description": "The action's description.",
            "nullable": true,
            "example": "Creates a new sales order in the connected system."
          },
          "TaskType": {
            "type": "integer",
            "description": "Integer code for what the action does: 1 = Open a website, 2 = Send an API request, 3 = Run a SmartConnect process, 4 = Trigger a Microsoft Flow, 5 = Run a connector action, 6 = Open a form, 7 = Multi-action, 8 = Document, 9 = Process SmartConnect errors, 10 = Run a workflow, 11 = Database action, 12 = Stored procedure.",
            "format": "int32",
            "example": 5
          },
          "ShowType": {
            "type": "integer",
            "description": "Integer code for how the action is presented before it runs: 0 = Run immediately, 1 = Show a form, 2 = Show a confirmation prompt, 3 = Drill down, 4 = Drill down with confirmation.",
            "format": "int32",
            "example": 1
          },
          "ConfirmationPrompt": {
            "type": "string",
            "description": "Message shown to the user when the action requires confirmation. Populated only when ShowType is a confirmation type.",
            "nullable": true,
            "example": "Are you sure you want to submit this order?"
          },
          "SubmitButtonLabel": {
            "type": "string",
            "description": "Label for the submit button on the action form or confirmation prompt.",
            "nullable": true,
            "example": "Submit"
          },
          "CancelButtonLabel": {
            "type": "string",
            "description": "Label for the cancel button on the action form or confirmation prompt.",
            "nullable": true,
            "example": "Cancel"
          },
          "ConnectorActionConnectorId": {
            "type": "string",
            "description": "Identifier of the connector that runs the action. Populated only when TaskType is a connector action.",
            "format": "uuid",
            "nullable": true,
            "example": "7182930a-0506-44b7-8a4b-5c6d7e8f9a0b"
          },
          "ConnectorActionGroupId": {
            "type": "string",
            "description": "Identifier of the connector group for the action. Populated only when TaskType is a connector action.",
            "format": "uuid",
            "nullable": true,
            "example": "82930a1b-0607-44b8-8a5b-6c7d8e9f0a1b"
          },
          "ConnectorActionEntityId": {
            "type": "string",
            "description": "Identifier of the connector entity the action targets. Populated only when TaskType is a connector action.",
            "format": "uuid",
            "nullable": true,
            "example": "930a1b2c-0708-44b9-8a6b-7c8d9e0f1a2b"
          },
          "ConnectorActionAction": {
            "type": "string",
            "description": "Name of the connector action or stored procedure to run. Populated for connector action and stored procedure task types.",
            "nullable": true,
            "example": "CreateSalesOrder"
          },
          "Endpoint": {
            "type": "string",
            "description": "Target URL for the request. Populated when TaskType opens a website or sends an API request.",
            "nullable": true,
            "example": "https://api.example.com/orders"
          },
          "Method": {
            "type": "integer",
            "description": "Integer code for the HTTP method used by an API request: 0 = Inherit from the connector, 1 = GET, 2 = POST, 3 = PUT, 4 = PATCH, 5 = DELETE. Populated when TaskType sends an API request.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Body": {
            "type": "string",
            "description": "Request body content sent with the API request. Populated for POST, PUT, and PATCH requests that do not use a URL-encoded form body.",
            "nullable": true,
            "example": "{ \"orderId\": 123 }"
          },
          "BodyType": {
            "type": "integer",
            "description": "Integer code for the request body format: 0 = Inherit from the connector, 1 = JSON, 2 = XML, 3 = Plain text, 4 = URL-encoded form. Populated for POST, PUT, and PATCH requests.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "RemoveEmptyBodyObjects": {
            "type": "boolean",
            "description": "Whether empty objects are stripped from the request body before sending.",
            "nullable": true,
            "example": true
          },
          "RemoveEmptyBodyProperties": {
            "type": "boolean",
            "description": "Whether empty properties are stripped from the request body before sending.",
            "nullable": true,
            "example": true
          },
          "WorkflowId": {
            "type": "string",
            "description": "Identifier of the workflow the action runs. Populated only when TaskType runs a workflow.",
            "format": "uuid",
            "nullable": true,
            "example": "0a1b2c3d-0809-44ba-8a7b-8c9d0e1f2a3b"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this action, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ActionShowType": {
        "enum": [
          "None",
          "Form",
          "Confirmation",
          "DrillDown",
          "DrillDownConfirmation"
        ],
        "type": "string",
        "description": "How an action is presented to the user before it runs.\n\n- `None` — Run immediately (no prompt)\n- `Form` — Show a form\n- `Confirmation` — Show a confirmation prompt\n- `DrillDown` — Drill down\n- `DrillDownConfirmation` — Drill down with confirmation\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "None": "Run immediately (no prompt)",
          "Form": "Show a form",
          "Confirmation": "Show a confirmation prompt",
          "DrillDown": "Drill down",
          "DrillDownConfirmation": "Drill down with confirmation"
        }
      },
      "ActionTaskType": {
        "enum": [
          "OpenWebsite",
          "SendApiRequest",
          "RunSmartConnectProcess",
          "TriggerMicrosoftFlow",
          "ConnectorAction",
          "OpenForm",
          "MultiAction",
          "Document",
          "ProcessSmartConnectErrors",
          "RunWorkflow",
          "DatabaseAction",
          "StoredProcedure"
        ],
        "type": "string",
        "description": "How an action runs (the action's task type — mirrors Constants.CustomActionType*).\n\n- `OpenWebsite` — Open a website\n- `SendApiRequest` — Send an API request\n- `RunSmartConnectProcess` — Run a SmartConnect process\n- `TriggerMicrosoftFlow` — Trigger a Microsoft Flow\n- `ConnectorAction` — Run a connector action\n- `OpenForm` — Open a form\n- `MultiAction` — Multi-action\n- `Document` — Document\n- `ProcessSmartConnectErrors` — Process SmartConnect errors\n- `RunWorkflow` — Run a workflow\n- `DatabaseAction` — Database action\n- `StoredProcedure` — Stored procedure\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "OpenWebsite": "Open a website",
          "SendApiRequest": "Send an API request",
          "RunSmartConnectProcess": "Run a SmartConnect process",
          "TriggerMicrosoftFlow": "Trigger a Microsoft Flow",
          "ConnectorAction": "Run a connector action",
          "OpenForm": "Open a form",
          "MultiAction": "Multi-action",
          "Document": "Document",
          "ProcessSmartConnectErrors": "Process SmartConnect errors",
          "RunWorkflow": "Run a workflow",
          "DatabaseAction": "Database action",
          "StoredProcedure": "Stored procedure"
        }
      },
      "AiModelResponse": {
        "type": "object",
        "properties": {
          "ConnectorAiModelId": {
            "type": "string",
            "description": "The AI model's unique identifier.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Name": {
            "type": "string",
            "description": "The AI model's display name.",
            "nullable": true,
            "example": "GPT-4o"
          },
          "ApiName": {
            "type": "string",
            "description": "The provider's API identifier used when calling the model.",
            "nullable": true,
            "example": "gpt-4o"
          },
          "Description": {
            "type": "string",
            "description": "A description of the AI model.",
            "nullable": true,
            "example": "OpenAI multimodal model for chat and reasoning."
          },
          "Reasoning": {
            "type": "integer",
            "description": "Integer code for the reasoning effort level sent to the model provider. Applies only to models with reasoning capability.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "ReasoningSummary": {
            "type": "integer",
            "description": "Integer code for the reasoning summary level sent to the model provider. Applies only to models with reasoning capability.",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentCompanyResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentCompanyId": {
            "type": "string",
            "description": "The unique identifier of the link between the AI prompt attachment and the company.",
            "format": "uuid",
            "example": "4f2a1c8e-9d3b-4e6a-8c1f-2b7d5e0a6f31"
          },
          "Company": {
            "$ref": "#/components/schemas/SimpleCompanyResponse"
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentFieldResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentFieldId": {
            "type": "string",
            "description": "The unique identifier of the link between the AI prompt attachment and the field.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The AI prompt attachment's unique identifier.",
            "format": "uuid",
            "example": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true,
            "example": "Customer list"
          },
          "Description": {
            "type": "string",
            "description": "A description of the attachment.",
            "nullable": true,
            "example": "Recent customer records provided as context to the prompt."
          },
          "AttachmentType": {
            "type": "integer",
            "description": "Integer code for the attachment type: 1 = List, 2 = File, 3 = Folder, 4 = Field, 5 = Favorite.",
            "format": "int32",
            "example": 1
          },
          "Connector": {
            "$ref": "#/components/schemas/SimpleConnectorResponse"
          },
          "Entity": {
            "$ref": "#/components/schemas/EntityResponseModel"
          },
          "Favorite": {
            "$ref": "#/components/schemas/SimpleFavoriteResponse"
          },
          "EntityField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Path": {
            "type": "string",
            "description": "The file or folder path for file and folder attachment types.",
            "nullable": true,
            "example": "/documents/reports"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records included from the attachment source.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "Message": {
            "type": "string",
            "description": "An optional message included with the attachment when passed to the AI model.",
            "nullable": true,
            "example": "Use this data to answer questions about open invoices."
          },
          "ChunkSize": {
            "type": "integer",
            "description": "The number of records per chunk when the attachment data is split for the AI model.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "Hypermedia links to related resources for this attachment.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentRestrictionApplyResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentRestrictionApplyId": {
            "type": "string",
            "description": "The restriction apply rule's unique identifier.",
            "format": "uuid",
            "example": "2c1a9f3e-6b8d-4a2c-9e7f-0d1b3c5a7e92"
          },
          "CustomEntityAiPromptAttachmentRestrictionId": {
            "type": "string",
            "description": "The identifier of the restriction this rule applies.",
            "format": "uuid",
            "example": "8d4e2b1a-7c6f-4d3e-9a8b-5f2c1e0d9b73"
          },
          "AppliesToType": {
            "type": "integer",
            "description": "Integer code for the type of resource the restriction applies to: 1 = User, 2 = Team, 3 = MCP client.",
            "format": "int32",
            "example": 1
          },
          "AppliesToId": {
            "type": "string",
            "description": "The identifier of the user, team or MCP client the restriction applies to.",
            "format": "uuid",
            "example": "3f0c7a2d-9e1b-4c6a-8d5f-2b4e6a1c8d70"
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentRestrictionResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentRestrictionId": {
            "type": "string",
            "description": "The restriction's unique identifier.",
            "format": "uuid",
            "example": "5e8c2a7d-1f4b-4c9e-8a3d-6b0f2e1c4a85"
          },
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The identifier of the AI prompt attachment this restriction belongs to.",
            "format": "uuid",
            "example": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field the restriction filters on.",
            "format": "uuid",
            "example": "9c0d1e2f-3a4b-5c6d-7e8f-0a1b2c3d4e5f"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator the restriction applies: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionValueResponse"
            },
            "description": "The values compared against the field for this restriction.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentRestrictionValueId": {
            "type": "string",
            "description": "The unique identifier of this restriction value.",
            "format": "uuid",
            "example": "7c1f4a2e-9b3d-4e6a-8f2c-1a5d7e9b3c4f"
          },
          "CustomEntityAiPromptAttachmentRestrictionId": {
            "type": "string",
            "description": "The identifier of the restriction this value belongs to.",
            "format": "uuid",
            "example": "2b8e6d10-4c3a-4f7b-9d1e-6a2c8f4b0e35"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The ordinal position of this value within the restriction (first value, second value, and so on).",
            "format": "int32",
            "example": 0
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value, populated when ValueType is Constant.",
            "nullable": true,
            "example": "1000"
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative date offset, populated when ValueType is Date.",
            "format": "int32",
            "nullable": true,
            "example": -30
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentSortResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentSortId": {
            "type": "string",
            "description": "The unique identifier of this attachment sort.",
            "format": "uuid",
            "example": "a4d2c6e8-1f3b-4a5c-9e7d-2b8f4c6a0d13"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Direction": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "example": 0
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this sort.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityAttachmentVariableResponse": {
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentVariableId": {
            "type": "string",
            "description": "The unique identifier of this attachment variable.",
            "format": "uuid",
            "example": "e9b3c4f1-7a2d-4e6b-8c1f-5d3a9b7e2c40"
          },
          "Variable": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the variable value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value, populated when ValueType is Constant.",
            "nullable": true,
            "example": "USD"
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative date offset, populated when ValueType is Date.",
            "format": "int32",
            "nullable": true,
            "example": -7
          },
          "VariableId": {
            "type": "string",
            "description": "The identifier of the variable supplying the value, populated when ValueType is Variable.",
            "format": "uuid",
            "nullable": true,
            "example": "3f8a1c2d-6b4e-4d7a-9c2f-1e5b8a3d7c60"
          }
        },
        "additionalProperties": false
      },
      "AiPromptEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          },
          "AiConnector": {
            "$ref": "#/components/schemas/SimpleConnectorResponse"
          },
          "AiModel": {
            "$ref": "#/components/schemas/AiModelResponse"
          },
          "AiToneModifier": {
            "$ref": "#/components/schemas/AiToneModifierResponse"
          },
          "AiPrompt": {
            "type": "string",
            "description": "The prompt text sent to the AI model.",
            "nullable": true,
            "example": "Summarize the attached invoices and flag any past due balances."
          },
          "AiResponseType": {
            "type": "integer",
            "description": "Integer code for the format of the AI response: 1 = Text, 2 = List.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentResponse"
            },
            "description": "The data attachments supplied to the AI prompt as context.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "AiToneModifierResponse": {
        "type": "object",
        "properties": {
          "AiToneModifierId": {
            "type": "string",
            "description": "The tone modifier's unique identifier.",
            "format": "uuid",
            "example": "5d7e9b3c-2a4f-4c6d-8e1b-7f3a9c5d2e80"
          },
          "Name": {
            "type": "string",
            "description": "The tone modifier's display name.",
            "nullable": true,
            "example": "Professional"
          },
          "Description": {
            "type": "string",
            "description": "A description of the tone modifier.",
            "nullable": true,
            "example": "Formal, concise business tone."
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text injected to steer the AI response tone.",
            "nullable": true,
            "example": "Respond in a formal, professional manner."
          },
          "Temperature": {
            "type": "number",
            "description": "The sampling temperature applied to the AI model, controlling response randomness.",
            "format": "double",
            "nullable": true,
            "example": 0.7
          },
          "TopP": {
            "type": "number",
            "description": "The nucleus sampling (top-p) value applied to the AI model.",
            "format": "double",
            "nullable": true,
            "example": 0.9
          },
          "MaxTokens": {
            "type": "integer",
            "description": "The maximum number of tokens the AI model may generate in the response.",
            "format": "int32",
            "nullable": true,
            "example": 2048
          }
        },
        "additionalProperties": false
      },
      "AuthenticationMethod": {
        "enum": [
          "None",
          "OAuth1",
          "OAuth2",
          "Basic",
          "ExchangeToken",
          "BearerToken",
          "NTLM",
          "ApiKey"
        ],
        "type": "string"
      },
      "BodyType": {
        "enum": [
          "Inherit",
          "Json",
          "Xml",
          "Text",
          "UrlEncodedForm"
        ],
        "type": "string",
        "description": "The format of a REST request body.\n\n- `Inherit` — Inherit from the connector\n- `Json` — JSON\n- `Xml` — XML\n- `Text` — Plain text\n- `UrlEncodedForm` — URL-encoded form\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Inherit": "Inherit from the connector",
          "Json": "JSON",
          "Xml": "XML",
          "Text": "Plain text",
          "UrlEncodedForm": "URL-encoded form"
        }
      },
      "BrowserExtensionChatAttachment": {
        "type": "object",
        "properties": {
          "AttachmentType": {
            "type": "integer",
            "description": "Integer code identifying the kind of attachment.",
            "format": "int32"
          },
          "AttachmentId": {
            "type": "string",
            "description": "Identifier of the attached resource.",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An attachment included with a chat request."
      },
      "BrowserExtensionChatMessage": {
        "type": "object",
        "properties": {
          "Role": {
            "type": "integer",
            "description": "Role the message is attributed to: 1 = user, 2 = assistant, 3 = tool result.",
            "format": "int32"
          },
          "Content": {
            "type": "string",
            "description": "The message text. Empty for an assistant turn that was only a tool call.",
            "nullable": true
          },
          "ToolName": {
            "type": "string",
            "description": "Name of the tool invoked, when this turn was a tool call.",
            "nullable": true
          },
          "ToolInput": {
            "type": "string",
            "description": "Serialized input passed to the tool, when this turn was a tool call.",
            "nullable": true
          },
          "ToolResult": {
            "type": "string",
            "description": "Result returned by the tool, when this turn was a tool result.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A prior conversation turn supplied with a chat request to provide history."
      },
      "BrowserExtensionChatPromptMessage": {
        "type": "object",
        "properties": {
          "Role": {
            "type": "integer",
            "description": "Integer code for the role the message is attributed to.",
            "format": "int32"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the message content type.",
            "format": "int32"
          },
          "Content": {
            "type": "string",
            "description": "The text content of the message.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A preset prompt message supplied with a chat request."
      },
      "BrowserExtensionChatRequest": {
        "type": "object",
        "properties": {
          "ConversationId": {
            "type": "string",
            "description": "Identifier of the conversation the message belongs to.",
            "nullable": true
          },
          "ProjectId": {
            "type": "string",
            "description": "Identifier of the project the conversation is scoped to.",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "The user's message text.",
            "nullable": true
          },
          "AiModelId": {
            "type": "string",
            "description": "Identifier of the AI model to generate the response.",
            "nullable": true
          },
          "Attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionChatAttachment"
            },
            "description": "Attachments included with the message.",
            "nullable": true
          },
          "PageContext": {
            "$ref": "#/components/schemas/BrowserExtensionPageContext"
          },
          "Tools": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Names of the tools made available to the assistant for this request.",
            "nullable": true
          },
          "PromptMessages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionChatPromptMessage"
            },
            "description": "Preset prompt messages to seed the conversation.",
            "nullable": true
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionChatMessage"
            },
            "description": "Prior conversation turns supplied by the client so the assistant has history/context.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A chat request sent to the browser extension AI assistant."
      },
      "BrowserExtensionConfigListItemResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension's unique identifier.",
            "format": "uuid",
            "example": "0a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "Name": {
            "type": "string",
            "description": "The browser extension's display name.",
            "nullable": true,
            "example": "Sage Intacct Assistant"
          },
          "Description": {
            "type": "string",
            "description": "A description of the browser extension.",
            "nullable": true,
            "example": "AI assistant embedded in Sage Intacct pages."
          },
          "ConnectorId": {
            "type": "string",
            "description": "The identifier of the connector backing the extension's data and AI.",
            "format": "uuid",
            "nullable": true,
            "example": "9f8e7d6c-5b4a-3210-9f8e-7d6c5b4a3210"
          },
          "SystemPrompt": {
            "type": "string",
            "description": "The system prompt that frames the extension's AI assistant.",
            "nullable": true,
            "example": "You are a helpful assistant for Sage Intacct users."
          },
          "WelcomeMessage": {
            "type": "string",
            "description": "The welcome message shown to the user when the extension opens.",
            "nullable": true,
            "example": "Hi! How can I help with your accounting today?"
          },
          "Urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigUrlResponse"
            },
            "description": "The host URLs the extension is configured to run on.",
            "nullable": true
          },
          "PromptGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPromptGroupResponse"
            },
            "description": "The grouped prompts (slash commands) available in the extension.",
            "nullable": true
          },
          "Tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigToolResponse"
            },
            "description": "The AI tools the extension exposes to its assistant.",
            "nullable": true
          },
          "Models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigModelResponse"
            },
            "description": "The AI models selectable within the extension.",
            "nullable": true
          },
          "BrowserExtensionType": {
            "type": "integer",
            "description": "Integer code for the ERP the extension targets: 1 = Sage Intacct, 2 = NetSuite, 3 = Dynamics 365 Business Central, 4 = DataBlend.",
            "format": "int32",
            "example": 1
          },
          "ErpName": {
            "type": "string",
            "description": "The display name of the targeted ERP, derived from BrowserExtensionType.",
            "nullable": true,
            "example": "Sage Intacct"
          },
          "ErpKey": {
            "type": "string",
            "description": "The short key of the targeted ERP, derived from BrowserExtensionType.",
            "nullable": true,
            "example": "intacct"
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigModelResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionModelId": {
            "type": "string",
            "description": "The unique identifier of this extension model assignment.",
            "format": "uuid",
            "example": "91122334-4556-6778-8990-011223344556"
          },
          "AiModelId": {
            "type": "string",
            "description": "The identifier of the connector AI model.",
            "format": "uuid",
            "example": "a2233445-5667-7889-9001-122334455667"
          },
          "Name": {
            "type": "string",
            "description": "The model's display name, taken from the connector AI model.",
            "nullable": true,
            "example": "GPT-4o"
          },
          "Icon": {
            "type": "string",
            "description": "The icon associated with the model.",
            "nullable": true,
            "example": "openai"
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPageAttachmentFieldResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPageAttachmentFieldId": {
            "type": "string",
            "description": "The unique identifier of this attachment field.",
            "format": "uuid",
            "example": "8c9d0e1f-2a3b-4c5d-6e7f-809112233445"
          },
          "BrowserExtensionPageAttachmentId": {
            "type": "string",
            "description": "The identifier of the attachment this field belongs to.",
            "format": "uuid",
            "example": "7b8c9d0e-1f2a-3b4c-5d6e-7f8091122334"
          },
          "BrowserExtensionPageFieldId": {
            "type": "string",
            "description": "The underlying page field this attachment field links to. Edit that field to change the selector/name.",
            "format": "uuid",
            "example": "6e7f8091-1223-3445-5667-7889900aabbc"
          },
          "Name": {
            "type": "string",
            "description": "The field's display name.",
            "nullable": true,
            "example": "Amount"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code identifying the kind of field. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field this attachment field maps to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "5f6a7b8c-9d0e-1f2a-3b4c-5d6e7f809112"
          },
          "Selector": {
            "type": "string",
            "description": "The selector used to read this field's value from the page.",
            "nullable": true,
            "example": "#line-amount"
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying the kind of selector used. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "WidgetParameterId": {
            "type": "string",
            "description": "The identifier of the widget parameter this field populates, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "6a7b8c9d-0e1f-2a3b-4c5d-6e7f80911223"
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPageAttachmentResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPageAttachmentId": {
            "type": "string",
            "description": "The unique identifier of this page attachment.",
            "format": "uuid",
            "example": "7b8c9d0e-1f2a-3b4c-5d6e-7f8091122334"
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The identifier of the page this attachment belongs to.",
            "format": "uuid",
            "example": "2c3d4e5f-6a7b-8c9d-0e1f-2a3b4c5d6e7f"
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true,
            "example": "Line Items"
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPageAttachmentFieldResponse"
            },
            "description": "The fields included in this attachment.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPageFieldResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPageFieldId": {
            "type": "string",
            "description": "The unique identifier of this page field.",
            "format": "uuid",
            "example": "4e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8091"
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The identifier of the page this field belongs to.",
            "format": "uuid",
            "example": "2c3d4e5f-6a7b-8c9d-0e1f-2a3b4c5d6e7f"
          },
          "Name": {
            "type": "string",
            "description": "The field's display name.",
            "nullable": true,
            "example": "Invoice Number"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code identifying the kind of field. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field this page field maps to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "5f6a7b8c-9d0e-1f2a-3b4c-5d6e7f809112"
          },
          "Selector": {
            "type": "string",
            "description": "The selector used to read this field's value from the page.",
            "nullable": true,
            "example": "#invoice-number"
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying the kind of selector used. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "WidgetParameterId": {
            "type": "string",
            "description": "The identifier of the widget parameter this field populates, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "6a7b8c9d-0e1f-2a3b-4c5d-6e7f80911223"
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPageResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The unique identifier of this page.",
            "format": "uuid",
            "example": "2c3d4e5f-6a7b-8c9d-0e1f-2a3b4c5d6e7f"
          },
          "BrowserExtensionUrlId": {
            "type": "string",
            "description": "The identifier of the URL this page belongs to.",
            "format": "uuid",
            "example": "1b2c3d4e-5f6a-7b8c-9d0e-1f2a3b4c5d6e"
          },
          "Name": {
            "type": "string",
            "description": "The page's display name.",
            "nullable": true,
            "example": "Invoice Detail"
          },
          "Path": {
            "type": "string",
            "description": "The URL path that identifies this page.",
            "nullable": true,
            "example": "/invoices/detail"
          },
          "PageIdentificationType": {
            "type": "integer",
            "description": "Integer code identifying how the page is matched. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "IframeSelector": {
            "type": "string",
            "description": "The selector for the iframe the extension targets on this page.",
            "nullable": true,
            "example": "#content-frame"
          },
          "WidgetId": {
            "type": "string",
            "description": "The identifier of the widget displayed on this page, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "3d4e5f6a-7b8c-9d0e-1f2a-3b4c5d6e7f80"
          },
          "SystemPrompt": {
            "type": "string",
            "description": "A page-specific system prompt that overrides the extension default.",
            "nullable": true,
            "example": "Focus on the invoice currently shown."
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPageFieldResponse"
            },
            "description": "The fields scraped from this page.",
            "nullable": true
          },
          "Attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPageAttachmentResponse"
            },
            "description": "The attachments configured for this page.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPromptGroupResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPromptGroupId": {
            "type": "string",
            "description": "The unique identifier of this prompt group. Empty for ungrouped prompts.",
            "format": "uuid",
            "example": "9d0e1f2a-3b4c-5d6e-7f80-911223344556"
          },
          "Name": {
            "type": "string",
            "description": "The prompt group's display name.",
            "nullable": true,
            "example": "Invoices"
          },
          "ParentGroupId": {
            "type": "string",
            "description": "The identifier of the parent group, for nested groups.",
            "format": "uuid",
            "nullable": true,
            "example": "0e1f2a3b-4c5d-6e7f-8091-223344556677"
          },
          "Prompts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPromptResponse"
            },
            "description": "The prompts contained in this group.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPromptMessageResponse": {
        "type": "object",
        "properties": {
          "McpPromptMessageId": {
            "type": "string",
            "description": "The unique identifier of the underlying MCP prompt message.",
            "format": "uuid",
            "example": "3b4c5d6e-7f80-9112-2334-455667788990"
          },
          "Role": {
            "type": "integer",
            "description": "Integer code for the role the message is attributed to: 1 = User, 2 = Assistant.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the message content type: 1 = Text, 2 = Image.",
            "format": "int32",
            "example": 1
          },
          "Message": {
            "type": "string",
            "description": "The text content of the message, for text messages.",
            "nullable": true,
            "example": "Please summarize this invoice."
          },
          "Url": {
            "type": "string",
            "description": "The URL of the message content, for image messages.",
            "nullable": true,
            "example": "https://example.com/invoice.png"
          },
          "MimeType": {
            "type": "string",
            "description": "The MIME type of the message content, for image messages.",
            "nullable": true,
            "example": "image/png"
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "The identifier of a shared instruction referenced by this message, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "4c5d6e7f-8091-1223-3445-566778899001"
          },
          "SharedInstructionContent": {
            "type": "string",
            "description": "The resolved content of the referenced shared instruction, if any.",
            "nullable": true,
            "example": "Always cite the source document."
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPromptParameterResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPromptParameterId": {
            "type": "string",
            "description": "The unique identifier of this prompt parameter.",
            "format": "uuid",
            "example": "5d6e7f80-9112-2334-4556-677889900112"
          },
          "BrowserExtensionPromptId": {
            "type": "string",
            "description": "The identifier of the prompt this parameter belongs to.",
            "format": "uuid",
            "example": "1f2a3b4c-5d6e-7f80-9112-233445566778"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code identifying how the parameter value is supplied (for example a constant or a page field). No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "example": 1
          },
          "McpPromptParameterId": {
            "type": "string",
            "description": "The identifier of the underlying MCP prompt parameter, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "6e7f8091-1223-3445-5667-788990011223"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's display name, taken from the MCP prompt parameter.",
            "nullable": true,
            "example": "InvoiceId"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value supplied for the parameter, when applicable.",
            "nullable": true,
            "example": "USD"
          },
          "BrowserExtensionPageFieldId": {
            "type": "string",
            "description": "The identifier of the page field that supplies the parameter value, when applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "4e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8091"
          },
          "IsRequired": {
            "type": "boolean",
            "description": "Whether the underlying MCP prompt parameter is required.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigPromptResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPromptId": {
            "type": "string",
            "description": "The unique identifier of this extension prompt.",
            "format": "uuid",
            "example": "1f2a3b4c-5d6e-7f80-9112-233445566778"
          },
          "McpPromptId": {
            "type": "string",
            "description": "The identifier of the underlying MCP prompt.",
            "format": "uuid",
            "example": "2a3b4c5d-6e7f-8091-1223-344556677889"
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The identifier of the page this prompt is scoped to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "2c3d4e5f-6a7b-8c9d-0e1f-2a3b4c5d6e7f"
          },
          "Name": {
            "type": "string",
            "description": "The prompt's display name, taken from the MCP prompt.",
            "nullable": true,
            "example": "Summarize Invoice"
          },
          "Description": {
            "type": "string",
            "description": "A description of the prompt, taken from the MCP prompt.",
            "nullable": true,
            "example": "Summarizes the currently displayed invoice."
          },
          "SlashCommand": {
            "type": "string",
            "description": "The slash command that triggers this prompt.",
            "nullable": true,
            "example": "/summarize"
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPromptParameterResponse"
            },
            "description": "The parameters supplied to this prompt.",
            "nullable": true
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPromptMessageResponse"
            },
            "description": "The messages that make up this prompt.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension's unique identifier.",
            "format": "uuid",
            "example": "0a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
          },
          "Name": {
            "type": "string",
            "description": "The browser extension's display name.",
            "nullable": true,
            "example": "Sage Intacct Assistant"
          },
          "Description": {
            "type": "string",
            "description": "A description of the browser extension.",
            "nullable": true,
            "example": "AI assistant embedded in Sage Intacct pages."
          },
          "ConnectorId": {
            "type": "string",
            "description": "The identifier of the connector backing the extension's data and AI.",
            "format": "uuid",
            "nullable": true,
            "example": "9f8e7d6c-5b4a-3210-9f8e-7d6c5b4a3210"
          },
          "SystemPrompt": {
            "type": "string",
            "description": "The system prompt that frames the extension's AI assistant.",
            "nullable": true,
            "example": "You are a helpful assistant for Sage Intacct users."
          },
          "WelcomeMessage": {
            "type": "string",
            "description": "The welcome message shown to the user when the extension opens.",
            "nullable": true,
            "example": "Hi! How can I help with your accounting today?"
          },
          "Urls": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigUrlResponse"
            },
            "description": "The host URLs the extension is configured to run on.",
            "nullable": true
          },
          "PromptGroups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPromptGroupResponse"
            },
            "description": "The grouped prompts (slash commands) available in the extension.",
            "nullable": true
          },
          "Tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigToolResponse"
            },
            "description": "The AI tools the extension exposes to its assistant.",
            "nullable": true
          },
          "Models": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigModelResponse"
            },
            "description": "The AI models selectable within the extension.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigToolResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionToolId": {
            "type": "string",
            "description": "The unique identifier of this extension tool.",
            "format": "uuid",
            "example": "7f809112-2334-4556-6778-899001122334"
          },
          "McpToolId": {
            "type": "string",
            "description": "The identifier of the underlying MCP tool.",
            "format": "uuid",
            "example": "80911223-3445-5667-7889-900112233445"
          },
          "Name": {
            "type": "string",
            "description": "The tool's display name, taken from the MCP tool.",
            "nullable": true,
            "example": "Get Invoices"
          },
          "Description": {
            "type": "string",
            "description": "A description of the tool, taken from the MCP tool.",
            "nullable": true,
            "example": "Retrieves invoices for the current customer."
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConfigUrlResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionUrlId": {
            "type": "string",
            "description": "The unique identifier of this configured URL.",
            "format": "uuid",
            "example": "1b2c3d4e-5f6a-7b8c-9d0e-1f2a3b4c5d6e"
          },
          "Url": {
            "type": "string",
            "description": "The host URL the extension runs on.",
            "nullable": true,
            "example": "https://www.intacct.com"
          },
          "Name": {
            "type": "string",
            "description": "The display name for this URL configuration.",
            "nullable": true,
            "example": "Intacct Production"
          },
          "CompanySelectorType": {
            "type": "integer",
            "description": "Integer code identifying how the active company is detected on the page. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "CompanySelector": {
            "type": "string",
            "description": "The selector used to read the active company from the page.",
            "nullable": true,
            "example": "#company-name"
          },
          "Pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigPageResponse"
            },
            "description": "The pages configured under this URL.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConversationDetailResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionConversationId": {
            "type": "string",
            "description": "The conversation's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "BrowserExtensionId": {
            "type": "string",
            "description": "Identifier of the browser extension the conversation belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Title": {
            "type": "string",
            "description": "The conversation's display title.",
            "nullable": true,
            "example": "Invoice questions"
          },
          "PageUrl": {
            "type": "string",
            "description": "URL of the web page the conversation was started from.",
            "nullable": true,
            "example": "https://app.example.com/invoices/1024"
          },
          "PagePath": {
            "type": "string",
            "description": "Path portion of the web page the conversation was started from.",
            "nullable": true,
            "example": "/invoices/1024"
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "Identifier of the browser extension page the conversation is associated with, when one applies.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "IsPinned": {
            "type": "boolean",
            "description": "Whether the conversation has been pinned by the user.",
            "example": false
          },
          "Status": {
            "type": "integer",
            "description": "Integer status code for the conversation: 1 = Active.",
            "format": "int32",
            "example": 1
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date and time the conversation was created, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T09:30:00Z"
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date and time the conversation was last modified, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T10:15:00Z"
          },
          "LastMessageDate": {
            "type": "string",
            "description": "Date and time of the most recent message in the conversation, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T10:15:00Z"
          },
          "MessageCount": {
            "type": "integer",
            "description": "Number of messages in the conversation.",
            "format": "int32",
            "example": 8
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConversationMessageResponse"
            },
            "description": "The messages that make up the conversation, in order.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this conversation.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConversationMessageResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionConversationMessageId": {
            "type": "string",
            "description": "The message's unique identifier.",
            "format": "uuid",
            "example": "0f8fad5b-d9cb-469f-a165-70867728950e"
          },
          "Role": {
            "type": "integer",
            "description": "Integer code for the message author role: 2 = assistant response; any other value is a user prompt.",
            "format": "int32",
            "example": 2
          },
          "Content": {
            "type": "string",
            "description": "The text content of the message.",
            "nullable": true,
            "example": "Here are the invoices for the selected customer."
          },
          "ToolCallId": {
            "type": "string",
            "description": "Identifier correlating this message to a tool call, when the message is part of a tool invocation.",
            "nullable": true,
            "example": "call_abc123"
          },
          "ToolName": {
            "type": "string",
            "description": "Name of the tool invoked for this message, when applicable.",
            "nullable": true,
            "example": "popdock-get-list"
          },
          "TokensUsed": {
            "type": "integer",
            "description": "Number of AI tokens consumed producing this message, when tracked.",
            "format": "int32",
            "nullable": true,
            "example": 320
          },
          "AiModelId": {
            "type": "string",
            "description": "Identifier of the AI model that generated this message, when applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date and time the message was created, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T10:15:00Z"
          },
          "SortOrder": {
            "type": "integer",
            "description": "Position of the message within the conversation, ascending.",
            "format": "int32",
            "example": 3
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionConversationResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionConversationId": {
            "type": "string",
            "description": "The conversation's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "BrowserExtensionId": {
            "type": "string",
            "description": "Identifier of the browser extension the conversation belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Title": {
            "type": "string",
            "description": "The conversation's display title.",
            "nullable": true,
            "example": "Invoice questions"
          },
          "PageUrl": {
            "type": "string",
            "description": "URL of the web page the conversation was started from.",
            "nullable": true,
            "example": "https://app.example.com/invoices/1024"
          },
          "PagePath": {
            "type": "string",
            "description": "Path portion of the web page the conversation was started from.",
            "nullable": true,
            "example": "/invoices/1024"
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "Identifier of the browser extension page the conversation is associated with, when one applies.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "IsPinned": {
            "type": "boolean",
            "description": "Whether the conversation has been pinned by the user.",
            "example": false
          },
          "Status": {
            "type": "integer",
            "description": "Integer status code for the conversation: 1 = Active.",
            "format": "int32",
            "example": 1
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date and time the conversation was created, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T09:30:00Z"
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date and time the conversation was last modified, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T10:15:00Z"
          },
          "LastMessageDate": {
            "type": "string",
            "description": "Date and time of the most recent message in the conversation, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T10:15:00Z"
          },
          "MessageCount": {
            "type": "integer",
            "description": "Number of messages in the conversation.",
            "format": "int32",
            "example": 8
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this conversation.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionPageContext": {
        "type": "object",
        "properties": {
          "Url": {
            "type": "string",
            "description": "URL of the host page.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "Path portion of the host page URL.",
            "nullable": true
          },
          "PageId": {
            "type": "string",
            "description": "Identifier of the matched browser extension page, when one applies.",
            "nullable": true
          },
          "PageName": {
            "type": "string",
            "description": "Display name of the matched browser extension page.",
            "nullable": true
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionPageFieldValue"
            },
            "description": "Field values scraped from the host page.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Context describing the host page a chat request was sent from."
      },
      "BrowserExtensionPageFieldValue": {
        "type": "object",
        "properties": {
          "FieldId": {
            "type": "string",
            "description": "Identifier of the browser extension page field this value corresponds to.",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The field's display name.",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The value read from the host page.",
            "nullable": true
          },
          "Selector": {
            "type": "string",
            "description": "The selector used to read this field's value from the page.",
            "nullable": true
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying the kind of selector used. No named code set is defined; treat the value as opaque.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "A field value scraped from the host page and supplied as page context."
      },
      "BrowserExtensionPageParameterModel": {
        "type": "object",
        "properties": {
          "ParameterName": {
            "type": "string",
            "description": "Name of the parameter being supplied to the page.",
            "nullable": true,
            "example": "CustomerId"
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying how the source value is located on the host page.",
            "format": "int32",
            "example": 0
          },
          "SourceKey": {
            "type": "string",
            "description": "Selector or key used to read the parameter value from the host page.",
            "nullable": true,
            "example": "#customer-id"
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionPageResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The page's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The page's display name.",
            "nullable": true,
            "example": "Invoice detail"
          },
          "WidgetId": {
            "type": "string",
            "description": "Identifier of the widget rendered on the page, when one is configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "WidgetName": {
            "type": "string",
            "description": "Display name of the widget rendered on the page.",
            "nullable": true,
            "example": "Open Invoices"
          },
          "ParameterMappings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionPageParameterModel"
            },
            "description": "Mappings that bind page parameters to values extracted from the host page.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "BrowserExtensionResponse": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "format": "int32"
          },
          "ConnectorId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "CreatedDate": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "CalculatedFieldLanguage": {
        "enum": [
          "Popdock",
          "Sql",
          "CSharp"
        ],
        "type": "string",
        "description": "Language a calculated field's `Script` is written in.\n\n- `Popdock` — Popdock expression language\n- `Sql` — SQL (dialect resolved from the connector)\n- `CSharp` — C#\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Popdock": "Popdock expression language",
          "Sql": "SQL (dialect resolved from the connector)",
          "CSharp": "C#"
        }
      },
      "ChartSettingsModel": {
        "type": "object",
        "properties": {
          "Type": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ValueFieldId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "CategoryFieldId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "SummaryMethod": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "MaxCategories": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ShowOthersCategory": {
            "type": "boolean",
            "nullable": true
          },
          "ShowCategoryLabels": {
            "type": "boolean",
            "nullable": true
          },
          "ShowValueLabels": {
            "type": "boolean",
            "nullable": true
          },
          "ShowLegend": {
            "type": "boolean",
            "nullable": true
          },
          "SortBy": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ColorPaletteId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "ColorPalette": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ChartSettingsRequest": {
        "type": "object",
        "properties": {
          "Type": {
            "type": "integer",
            "description": "Graph type: 0 = column … 7 = big number.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "ValueFieldId": {
            "type": "string",
            "description": "Field whose values are plotted (the measure).",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "CategoryFieldId": {
            "type": "string",
            "description": "Field used to group values into categories (the dimension).",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "How values are aggregated: 0 = none … 17 = concatenate (e.g. 1 = sum).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "MaxCategories": {
            "type": "integer",
            "description": "Maximum number of categories to plot. Must be greater than 0.",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "ShowOthersCategory": {
            "type": "boolean",
            "description": "When true, groups categories beyond Popdock.WebApi.Models.Request.ChartSettingsRequest.MaxCategories into an \"Others\" slice.",
            "nullable": true,
            "example": true
          },
          "ShowCategoryLabels": {
            "type": "boolean",
            "description": "When true, shows category (axis) labels on the chart.",
            "nullable": true,
            "example": true
          },
          "ShowValueLabels": {
            "type": "boolean",
            "description": "When true, shows value labels on the chart.",
            "nullable": true,
            "example": true
          },
          "ShowLegend": {
            "type": "boolean",
            "description": "When true, shows the chart legend.",
            "nullable": true,
            "example": true
          },
          "SortBy": {
            "type": "integer",
            "description": "Sort order: 0 = category ascending, 1 = category descending, 2 = value ascending, 3 = value descending.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "ColorPaletteId": {
            "type": "string",
            "description": "Color palette used to render the chart series.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false,
        "description": "Chart display settings for a favorite whose view type is chart."
      },
      "ColorPaletteColorResponse": {
        "type": "object",
        "properties": {
          "ColorPaletteColorId": {
            "type": "string",
            "description": "The color's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorPaletteId": {
            "type": "string",
            "description": "The palette this color belongs to.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "HexColor": {
            "type": "string",
            "description": "The color as a 6-digit hex string (RRGGBB).",
            "nullable": true,
            "example": "E53935"
          },
          "Order": {
            "type": "integer",
            "description": "Sort position within the palette.",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "ColorPaletteResponse": {
        "type": "object",
        "properties": {
          "ColorPaletteId": {
            "type": "string",
            "description": "The palette's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The palette's display name.",
            "nullable": true,
            "example": "Brand Colors"
          },
          "Description": {
            "type": "string",
            "description": "An optional description of the palette.",
            "nullable": true,
            "example": "Primary brand palette used across dashboards."
          },
          "Colors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ColorPaletteColorResponse"
            },
            "description": "The palette's colors, ordered by their sort position.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ColorResponse": {
        "type": "object",
        "properties": {
          "ColorId": {
            "type": "string",
            "description": "The color's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The color's display name.",
            "nullable": true,
            "example": "Brand Blue"
          },
          "HexColor": {
            "type": "string",
            "description": "The color's hexadecimal RGB value.",
            "nullable": true,
            "example": "#1A73E8"
          }
        },
        "additionalProperties": false
      },
      "CompanyResponse": {
        "type": "object",
        "properties": {
          "CompanyId": {
            "type": "string",
            "description": "The company's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The company's display name.",
            "nullable": true,
            "example": "Contoso Ltd"
          },
          "DatabaseName": {
            "type": "string",
            "description": "Name of the underlying database the company's data is read from.",
            "nullable": true,
            "example": "CONTOSO_PROD"
          },
          "Currency": {
            "type": "string",
            "description": "The company's currency code, used to interpret its monetary values.",
            "nullable": true,
            "example": "USD"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the company is hidden from selection.",
            "nullable": true,
            "example": false
          },
          "Website": {
            "type": "string",
            "description": "The company's website address.",
            "nullable": true,
            "example": "https://www.contoso.com"
          },
          "Locale": {
            "type": "string",
            "description": "The company's locale or culture code.",
            "nullable": true,
            "example": "en-US"
          },
          "Default": {
            "type": "boolean",
            "description": "Whether this company is the default selection in its context: for a top-level company, whether it is the connector's default company; for a child company, whether it is its parent's default child company.",
            "nullable": true,
            "example": true
          },
          "Connector": {
            "$ref": "#/components/schemas/SimpleConnectorResponse"
          },
          "Children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompanyResponse"
            },
            "description": "Child companies nested under this company.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this company.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ComparisonEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          },
          "FromEntity": {
            "$ref": "#/components/schemas/EntityResponseModel"
          },
          "ToEntity": {
            "$ref": "#/components/schemas/EntityResponseModel"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "Integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "ComparisonMethod": {
        "enum": [
          "Difference",
          "Similarity"
        ],
        "type": "string",
        "description": "The method used to compare records in a comparison entity.\n\n- `Difference` — Difference\n- `Similarity` — Similarity\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Difference": "Difference",
          "Similarity": "Similarity"
        }
      },
      "ConnectorAiDataSourceFilterResponse": {
        "type": "object",
        "properties": {
          "ConnectorAiDataSourceFilterId": {
            "type": "string",
            "description": "The data source filter's unique identifier.",
            "format": "uuid",
            "example": "9b1c3d2e-5f47-4a8b-90c1-7e2d4f6a8b03"
          },
          "Key": {
            "type": "string",
            "description": "The name of the field the filter is applied to.",
            "nullable": true,
            "example": "Category"
          },
          "Value": {
            "type": "string",
            "description": "The value the field is compared against.",
            "nullable": true,
            "example": "Invoices"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the filter comparison type applied to the field.",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "ConnectorAiDataSourceResponse": {
        "type": "object",
        "properties": {
          "ConnectorAiDataSourceId": {
            "type": "string",
            "description": "The AI data source's unique identifier.",
            "format": "uuid",
            "example": "2c6f4a1b-8d39-4e7c-b201-5f8a3c9d6e04"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the data source type: 1 = identified by an external data source ID; 2 = derived from a parent data source.",
            "format": "int32",
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The data source's display name.",
            "nullable": true,
            "example": "Knowledge Base"
          },
          "Description": {
            "type": "string",
            "description": "A description of the data source.",
            "nullable": true,
            "example": "Indexed product documentation for AI grounding."
          },
          "ExternalId": {
            "type": "string",
            "description": "The identifier of the external data source (for example, a search index name). Used when Type is 1.",
            "nullable": true,
            "example": "kb-index-prod"
          },
          "MaxResults": {
            "type": "integer",
            "description": "The maximum number of results returned from the data source per query.",
            "format": "int32",
            "example": 5
          },
          "ParentDataSource": {
            "$ref": "#/components/schemas/ConnectorAiDataSourceResponse"
          },
          "Filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorAiDataSourceFilterResponse"
            },
            "description": "The filters that constrain results returned from the data source.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConnectorAiToolResponse": {
        "type": "object",
        "properties": {
          "ConnectorAiToolId": {
            "type": "string",
            "description": "The AI tool's unique identifier.",
            "format": "uuid",
            "example": "4d8b2e6f-1a73-4c92-8b50-9e3f7a1c2d05"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the tool exposes to the connector's AI model: 1 = Custom MCP tool, 2 = Third-party MCP tool, 3 = Web search.",
            "format": "int32",
            "example": 1
          },
          "McpTool": {
            "$ref": "#/components/schemas/McpToolResponse"
          },
          "PermissionType": {
            "type": "integer",
            "description": "Integer code for how a tool call is authorized: 1 = Always ask the user, 2 = Always allow.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this AI tool.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConnectorAiToolType": {
        "enum": [
          "CustomMcpTool",
          "ThirdPartyMcpTool",
          "WebSearch"
        ],
        "type": "string",
        "description": "What an AI tool exposes to the connector's AI model.\n\n- `CustomMcpTool` — Custom MCP tool\n- `ThirdPartyMcpTool` — Third-party MCP tool\n- `WebSearch` — Web search\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "CustomMcpTool": "Custom MCP tool",
          "ThirdPartyMcpTool": "Third-party MCP tool",
          "WebSearch": "Web search"
        }
      },
      "ConnectorResponse": {
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ConnectorType": {
            "type": "integer",
            "description": "Integer code identifying the connector's data source type — the kind of system it connects to.",
            "format": "int32",
            "example": 1
          },
          "ConnectorSetupId": {
            "type": "string",
            "description": "Identifier of the connector setup (the template that defines this connector's type and the data it exposes).",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Name": {
            "type": "string",
            "description": "The connector's display name.",
            "nullable": true,
            "example": "Salesforce Production"
          },
          "DefaultCompanyId": {
            "type": "string",
            "description": "Identifier of the company used by default when querying this connector, if one is set.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "CompanyPrompt": {
            "type": "string",
            "description": "Singular label this connector uses for a \"company\" (some sources call it a database, organization, and so on).",
            "nullable": true,
            "example": "Company"
          },
          "CompanyPluralPrompt": {
            "type": "string",
            "description": "Plural form of the company label.",
            "nullable": true,
            "example": "Companies"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the connector was created.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-12"
          },
          "Locale": {
            "type": "string",
            "description": "Locale/culture the connector uses when formatting values.",
            "nullable": true,
            "example": "en-US"
          },
          "Currency": {
            "type": "string",
            "description": "Default currency code (ISO 4217) for monetary values returned by this connector.",
            "nullable": true,
            "example": "USD"
          },
          "NumberOfCompanies": {
            "type": "integer",
            "description": "Number of companies available in this connector. Populated only on endpoints that include counts.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "NumberOfGroups": {
            "type": "integer",
            "description": "Number of entity groups defined in this connector. Populated only on endpoints that include counts.",
            "format": "int32",
            "nullable": true,
            "example": 8
          },
          "ChildConnectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorResponse"
            },
            "description": "Child connectors nested under this connector when it is a parent; otherwise omitted.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related collections (entities, entity groups, and companies).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConnectorRestErrorCodeResponse": {
        "type": "object",
        "properties": {
          "ConnectorRestId": {
            "type": "string",
            "description": "The identifier of the REST connector this error code belongs to.",
            "format": "uuid",
            "example": "7e1d9c3a-2b48-4f60-91c2-6a5e8d7f3b06"
          },
          "Code": {
            "type": "integer",
            "description": "The HTTP status code that triggers this error-handling rule.",
            "format": "int32",
            "example": 429
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the error-handling behavior: 0 = retry the request when this HTTP status code is returned.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false
      },
      "ConnectorRestParameterResponse": {
        "type": "object",
        "properties": {
          "ConnectorRestParameterId": {
            "type": "string",
            "description": "The REST parameter's unique identifier.",
            "format": "uuid",
            "example": "1f3a7c5d-9e24-4b81-90a3-8d6f2b4e7c08"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for where the parameter is applied to the request: 1 = URL parameter, 2 = Header, 3 = Body.",
            "format": "int32",
            "example": 1
          },
          "Key": {
            "type": "string",
            "description": "The parameter name.",
            "nullable": true,
            "example": "api-version"
          },
          "Value": {
            "type": "string",
            "description": "The parameter value.",
            "nullable": true,
            "example": "2024-01-01"
          },
          "RemoveWhenEmptyValue": {
            "type": "boolean",
            "description": "Whether the parameter is omitted from the request when its value is empty.",
            "nullable": true,
            "example": true
          },
          "DoNotUrlEncode": {
            "type": "boolean",
            "description": "Whether the parameter value is sent without URL encoding.",
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false
      },
      "ConnectorRestVariableResponse": {
        "type": "object",
        "properties": {
          "VariableId": {
            "type": "string",
            "description": "The REST variable's unique identifier.",
            "format": "uuid",
            "example": "6a2e8d4c-3f51-4b97-82d0-7c9f1a5b3e09"
          },
          "Name": {
            "type": "string",
            "description": "The variable's name.",
            "nullable": true,
            "example": "BaseUrl"
          },
          "Placeholder": {
            "type": "string",
            "description": "The placeholder token substituted with the variable's value in REST requests.",
            "nullable": true,
            "example": "{{BaseUrl}}"
          },
          "Description": {
            "type": "string",
            "description": "A description of the variable.",
            "nullable": true,
            "example": "The base URL of the REST service."
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for the variable is required.",
            "example": true
          }
        },
        "additionalProperties": false
      },
      "CreateBrowserExtensionConversationMessageRequest": {
        "type": "object",
        "properties": {
          "LocalId": {
            "type": "string",
            "description": "Client-assigned identifier used to reconcile the message during synchronization.",
            "nullable": true
          },
          "Role": {
            "type": "integer",
            "description": "Integer code for the message author role: 2 = assistant response; any other value is a user prompt.",
            "format": "int32"
          },
          "Content": {
            "type": "string",
            "description": "The text content of the message.",
            "nullable": true
          },
          "ToolCallId": {
            "type": "string",
            "description": "Identifier correlating this message to a tool call, when the message is part of a tool invocation.",
            "nullable": true
          },
          "ToolName": {
            "type": "string",
            "description": "Name of the tool invoked for this message, when applicable.",
            "nullable": true
          },
          "TokensUsed": {
            "type": "integer",
            "description": "Number of AI tokens consumed producing this message, when tracked.",
            "format": "int32",
            "nullable": true
          },
          "AiModelId": {
            "type": "string",
            "description": "Identifier of the AI model that generated this message, when applicable.",
            "nullable": true
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date and time the message was created, in ISO 8601 format.",
            "nullable": true
          },
          "SortOrder": {
            "type": "integer",
            "description": "Position of the message within the conversation, ascending.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension conversation message."
      },
      "CreateBrowserExtensionConversationRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionConversationId": {
            "type": "string",
            "description": "The conversation's unique identifier.",
            "nullable": true
          },
          "BrowserExtensionId": {
            "type": "string",
            "description": "Identifier of the browser extension the conversation belongs to.",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The conversation's display title.",
            "nullable": true
          },
          "PageUrl": {
            "type": "string",
            "description": "URL of the web page the conversation was started from.",
            "nullable": true
          },
          "PagePath": {
            "type": "string",
            "description": "Path portion of the web page the conversation was started from.",
            "nullable": true
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "Identifier of the browser extension page the conversation is associated with, when one applies.",
            "nullable": true
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateBrowserExtensionConversationMessageRequest"
            },
            "description": "The messages to create alongside the conversation, in order.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension conversation."
      },
      "CustomEntityCompareFieldResponse": {
        "type": "object",
        "properties": {
          "CustomCompareFieldId": {
            "type": "string",
            "description": "Unique identifier of the comparison field.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "CompareFromFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value is compared from (the left side of the comparison).",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "CompareToFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value is compared to (the right side of the comparison).",
            "format": "uuid",
            "nullable": true,
            "example": "1f9c3a5e-7d2b-4c8a-bf11-6e0a2d4c8b91"
          },
          "CustomEntityFieldId": {
            "type": "string",
            "description": "Identifier of the custom entity field this comparison produces.",
            "format": "uuid",
            "nullable": true,
            "example": "a3bb189e-8bf9-3888-9912-ace4e6543002"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the comparison entity that owns this field.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          }
        },
        "additionalProperties": false
      },
      "CustomEntityJoinFieldResponse": {
        "type": "object",
        "properties": {
          "CustomJoinFieldId": {
            "type": "string",
            "description": "Unique identifier of the join field.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the underlying entity field that this join field exposes.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "CustomEntityJoinEntityId": {
            "type": "string",
            "description": "Identifier of the joined entity that this field belongs to.",
            "format": "uuid",
            "nullable": true,
            "example": "1f9c3a5e-7d2b-4c8a-bf11-6e0a2d4c8b91"
          },
          "FilterOnly": {
            "type": "boolean",
            "description": "Whether the field is used only for filtering and is not returned in the result set.",
            "nullable": true,
            "example": false
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the field: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "SummaryType": {
            "type": "integer",
            "description": "Integer code for how the field participates in a summary: 1 = Group, 2 = Sum.",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "CustomEntityJoinLinkResponse": {
        "type": "object",
        "properties": {
          "CustomEntityLinkId": {
            "type": "string",
            "description": "Unique identifier of the join link.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "CustomJoinEntityId": {
            "type": "string",
            "description": "Identifier of the joined entity that this link belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "FromFieldId": {
            "type": "string",
            "description": "Identifier of the source field on the left side of the join.",
            "format": "uuid",
            "example": "1f9c3a5e-7d2b-4c8a-bf11-6e0a2d4c8b91"
          },
          "ToFieldId": {
            "type": "string",
            "description": "Identifier of the target field on the right side of the join.",
            "format": "uuid",
            "example": "a3bb189e-8bf9-3888-9912-ace4e6543002"
          }
        },
        "additionalProperties": false
      },
      "CustomEntityMergeEntity": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "Identifier of the entity included in the merge.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "CompanyIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the companies from this entity that are included in the merge.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomListGroupFieldModel": {
        "type": "object",
        "properties": {
          "FieldId": {
            "type": "string",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "nullable": true
          },
          "DisplayName": {
            "type": "string",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "format": "uuid"
          },
          "BaseFieldId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "DateFormat": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CustomListSummaryFieldModel": {
        "type": "object",
        "properties": {
          "FieldId": {
            "type": "string",
            "format": "uuid"
          },
          "DisplayName": {
            "type": "string",
            "nullable": true
          },
          "SummaryMethod": {
            "type": "integer",
            "format": "int32"
          },
          "EntityFieldId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "BaseFieldId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "format": "int32"
          },
          "SummaryType": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "DataLakeCopyEntityRequest": {
        "type": "object",
        "properties": {
          "DestinationEntityId": {
            "type": "string",
            "description": "The data lake entity the copied list is written into.",
            "format": "uuid"
          },
          "ConnectorId": {
            "type": "string",
            "description": "The data lake connector that will hold the copied entity.",
            "format": "uuid"
          },
          "EntityId": {
            "type": "string",
            "description": "The source list (entity) being copied into the data lake.",
            "format": "uuid"
          },
          "FavoriteId": {
            "type": "string",
            "description": "Optional favorite (saved view) whose fields and columns define what is copied. When omitted, the entity's own fields are used.",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "Optional company to scope the copied data to.",
            "format": "uuid",
            "nullable": true
          },
          "Filename": {
            "type": "string",
            "description": "The API name given to the new data lake entity (and its destination file/folder).",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The display name for the new data lake entity.",
            "nullable": true
          },
          "CalculatedFields": {
            "type": "integer",
            "description": "How calculated fields are handled when copying: whether they are ignored, kept as their underlying script, or copied as-is.",
            "format": "int32"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Optional group to place the new entity under.",
            "format": "uuid",
            "nullable": true
          },
          "ChunkField": {
            "type": "string",
            "description": "Optional field used to chunk (partition) the copied data when loading it into the data lake.",
            "format": "uuid",
            "nullable": true
          },
          "ChunkGranularity": {
            "type": "integer",
            "description": "The granularity used when chunking by the chunk field (e.g. by day, month or year).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for copying a list (entity) into a data lake connector as a new entity."
      },
      "DateFormat": {
        "enum": [
          "Iso8601",
          "EpochSeconds",
          "EpochMilliseconds",
          "Custom"
        ],
        "type": "string"
      },
      "DateValueResponse": {
        "type": "object",
        "properties": {
          "Value": {
            "type": "integer",
            "description": "Integer code identifying the relative date value (for example 0 = today, 3 = start of week, or 6 = end of month).",
            "format": "int32",
            "example": 3
          },
          "Name": {
            "type": "string",
            "description": "Human-readable label for the relative date value.",
            "nullable": true,
            "example": "Start of month"
          },
          "IsRange": {
            "type": "boolean",
            "description": "Whether this value represents a date range rather than a single point in time.",
            "nullable": true,
            "example": false
          },
          "Group": {
            "type": "string",
            "description": "Optional category label the relative date value is grouped under. Currently always returned as an empty string by the API.",
            "nullable": true,
            "example": ""
          }
        },
        "additionalProperties": false
      },
      "DbCustomEntityJoinEntity": {
        "type": "object",
        "properties": {
          "CustomJoinEntityId": {
            "type": "string",
            "format": "uuid"
          },
          "CustomEntityId": {
            "type": "string",
            "format": "uuid"
          },
          "EntityId": {
            "type": "string",
            "format": "uuid"
          },
          "JoinToEntityId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "JoinType": {
            "type": "integer",
            "format": "int32"
          },
          "CompanyId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "Alias": {
            "type": "string",
            "nullable": true
          },
          "Summary": {
            "type": "boolean",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DetailAiFavoriteParameterDefaultValueType": {
        "enum": [
          "None",
          "Constant",
          "Date",
          "Parameter",
          "Ai"
        ],
        "type": "string",
        "description": "How an AI-favorite parameter's default value is sourced.\n\n- `None` — No default\n- `Constant` — Constant value\n- `Date` — Date value\n- `Parameter` — From a parameter\n- `Ai` — AI-generated\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "None": "No default",
          "Constant": "Constant value",
          "Date": "Date value",
          "Parameter": "From a parameter",
          "Ai": "AI-generated"
        }
      },
      "DetailAiFavoriteParameterType": {
        "enum": [
          "Parameter",
          "Calculation"
        ],
        "type": "string",
        "description": "What an AI-favorite parameter represents.\n\n- `Parameter` — Parameter\n- `Calculation` — Calculation\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Parameter": "Parameter",
          "Calculation": "Calculation"
        }
      },
      "DetailAiPromptType": {
        "enum": [
          "Fixed",
          "User"
        ],
        "type": "string",
        "description": "How an AI-prompt detail's prompt is sourced.\n\n- `Fixed` — Fixed prompt defined in the configuration\n- `User` — Prompt supplied by the user at run time\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Fixed": "Fixed prompt defined in the configuration",
          "User": "Prompt supplied by the user at run time"
        }
      },
      "DetailDisplayType": {
        "enum": [
          "None",
          "Bottom",
          "Right",
          "DrillDown",
          "FieldDrillDown"
        ],
        "type": "string",
        "description": "Where/how a detail is rendered relative to the record.\n\n- `None` — Not displayed\n- `Bottom` — Below the record\n- `Right` — Right of the record\n- `DrillDown` — Drill-down\n- `FieldDrillDown` — Field drill-down\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "None": "Not displayed",
          "Bottom": "Below the record",
          "Right": "Right of the record",
          "DrillDown": "Drill-down",
          "FieldDrillDown": "Field drill-down"
        }
      },
      "DetailType": {
        "enum": [
          "List",
          "Singleton",
          "Summary",
          "Shipping",
          "IFrame",
          "Group",
          "Image",
          "AiPrompt",
          "File",
          "AiChat"
        ],
        "type": "string",
        "description": "The kind of detail (panel/view) attached to an entity.\n\n- `List` — Related list\n- `Singleton` — Singleton (a single related record)\n- `Summary` — Summary\n- `Shipping` — Shipping tracking\n- `IFrame` — iFrame / embedded URL\n- `Group` — Group\n- `Image` — Image\n- `AiPrompt` — AI prompt\n- `File` — File\n- `AiChat` — AI chat\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "List": "Related list",
          "Singleton": "Singleton (a single related record)",
          "Summary": "Summary",
          "Shipping": "Shipping tracking",
          "IFrame": "iFrame / embedded URL",
          "Group": "Group",
          "Image": "Image",
          "AiPrompt": "AI prompt",
          "File": "File",
          "AiChat": "AI chat"
        }
      },
      "DownloadFileRequest": {
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector to download the file from.",
            "format": "uuid"
          },
          "File": {
            "type": "string",
            "description": "The name of the file to download.",
            "nullable": true
          },
          "Folder": {
            "type": "string",
            "description": "The folder the file is located in.",
            "nullable": true
          },
          "Company": {
            "type": "string",
            "description": "The company within the connector to download the file from.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for downloading a file from a connector's data source."
      },
      "EndpointCustomHeaderResponse": {
        "type": "object",
        "properties": {
          "EndpointResponseHeaderId": {
            "type": "string",
            "description": "The custom response header's unique identifier.",
            "format": "uuid",
            "example": "a1c8e9d2-3b4f-4e6a-8c1d-2f5b7a9e0c34"
          },
          "Key": {
            "type": "string",
            "description": "The HTTP header name.",
            "nullable": true,
            "example": "Content-Type"
          },
          "Value": {
            "type": "string",
            "description": "The HTTP header value.",
            "nullable": true,
            "example": "application/json"
          }
        },
        "additionalProperties": false
      },
      "EndpointCustomResponse": {
        "type": "object",
        "properties": {
          "EndpointResponseId": {
            "type": "string",
            "description": "The custom response's unique identifier.",
            "format": "uuid",
            "example": "7d9f3b21-5c4e-4a8b-9d6f-1e2c3a4b5d6e"
          },
          "Code": {
            "type": "integer",
            "description": "The HTTP status code returned by this custom response.",
            "format": "int32",
            "example": 404
          },
          "Body": {
            "type": "string",
            "description": "The response body returned with this custom response.",
            "nullable": true,
            "example": "No records were found."
          },
          "Headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointCustomHeaderResponse"
            },
            "description": "The custom HTTP headers returned with this response.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EndpointFieldResponse": {
        "type": "object",
        "properties": {
          "EndpointFieldId": {
            "type": "string",
            "description": "The endpoint field's unique identifier.",
            "format": "uuid",
            "example": "4f2e1d6c-8a3b-4c5d-9e7f-0a1b2c3d4e5f"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Name": {
            "type": "string",
            "description": "The name the field is exposed as in the endpoint output.",
            "nullable": true,
            "example": "CustomerName"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this endpoint field.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EndpointJsonSchemaItemResponse": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "The JSON Schema type of each item, always \"object\".",
            "nullable": true,
            "example": "object"
          },
          "properties": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/JsonNode"
            },
            "description": "The JSON Schema property definitions, keyed by field name, describing each endpoint field.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EndpointJsonSchemaResponse": {
        "type": "object",
        "properties": {
          "$schema": {
            "type": "string",
            "description": "The JSON Schema dialect URI the schema conforms to.",
            "nullable": true,
            "example": "https://json-schema.org/draft/2020-12/schema"
          },
          "type": {
            "type": "string",
            "description": "The root JSON Schema type, always \"array\" since the endpoint returns a list of records.",
            "nullable": true,
            "example": "array"
          },
          "items": {
            "$ref": "#/components/schemas/EndpointJsonSchemaItemResponse"
          }
        },
        "additionalProperties": false
      },
      "EndpointParameterResponse": {
        "type": "object",
        "properties": {
          "EndpointParameterId": {
            "type": "string",
            "description": "The endpoint parameter's unique identifier.",
            "format": "uuid",
            "example": "9b3c5d7e-1f2a-4b6c-8d0e-3a5c7e9b1d2f"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's name as used in the endpoint request.",
            "nullable": true,
            "example": "customerId"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Variable": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied in the request.",
            "nullable": true,
            "example": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this endpoint parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EndpointResponse": {
        "type": "object",
        "properties": {
          "EndpointId": {
            "type": "string",
            "description": "The endpoint's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Endpoint": {
            "type": "string",
            "description": "The endpoint's URL path.",
            "nullable": true,
            "example": "customers/active"
          },
          "Connector": {
            "$ref": "#/components/schemas/SimpleConnectorResponse"
          },
          "Entity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "Company": {
            "$ref": "#/components/schemas/SimpleCompanyResponse"
          },
          "Favorite": {
            "$ref": "#/components/schemas/SimpleFavoriteResponse"
          },
          "DefaultFormat": {
            "type": "string",
            "description": "The default response format returned by the endpoint.",
            "nullable": true,
            "example": "json"
          },
          "SingleRecord": {
            "type": "boolean",
            "description": "Whether the endpoint returns only a single record.",
            "nullable": true,
            "example": false
          },
          "SingleValue": {
            "type": "boolean",
            "description": "Whether the endpoint returns only a single value.",
            "nullable": true,
            "example": false
          },
          "FieldName": {
            "type": "string",
            "description": "The name of the field the endpoint filters or returns when restricted to a single field.",
            "nullable": true,
            "example": "CustomerName"
          },
          "FieldValue": {
            "type": "string",
            "description": "The value used to filter the endpoint when restricted to a single field value.",
            "nullable": true,
            "example": "Active"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records the endpoint returns.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "Locale": {
            "type": "string",
            "description": "The locale applied to the endpoint's results.",
            "nullable": true,
            "example": "en-US"
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointParameterResponse"
            },
            "description": "The parameters accepted by the endpoint.",
            "nullable": true
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointFieldResponse"
            },
            "description": "The fields returned by the endpoint.",
            "nullable": true
          },
          "Sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointSortResponse"
            },
            "description": "The sort orders applied to the endpoint's results.",
            "nullable": true
          },
          "NoDataResponse": {
            "$ref": "#/components/schemas/EndpointCustomResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EndpointSortResponse": {
        "type": "object",
        "properties": {
          "EndpointSortId": {
            "type": "string",
            "description": "The endpoint sort's unique identifier.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Descending": {
            "type": "boolean",
            "description": "Whether the sort is in descending order; false or null sorts ascending.",
            "nullable": true,
            "example": false
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this endpoint sort.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityActionResponse": {
        "type": "object",
        "properties": {
          "EntityActionId": {
            "type": "string",
            "description": "The entity action's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityId": {
            "type": "string",
            "description": "The identifier of the entity this action belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "ActionId": {
            "type": "string",
            "description": "The identifier of the underlying action this entity action runs, when applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The action's display name.",
            "nullable": true,
            "example": "Send invoice"
          },
          "Icon": {
            "type": "string",
            "description": "The icon shown for the action.",
            "nullable": true,
            "example": "envelope"
          },
          "Location": {
            "type": "integer",
            "description": "Integer code for where the action is shown: 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record.",
            "format": "int32",
            "example": 1
          },
          "OpenWebsiteLocation": {
            "type": "integer",
            "description": "Integer code for where an opened website is displayed, using the same location codes: 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the action's task type: 1 = Open a website, 2 = Send an API request, 3 = Run a SmartConnect process, 4 = Trigger a Microsoft Flow, 5 = Connector action, 6 = Open a form, 7 = Multi-action, 8 = Document, 9 = Process SmartConnect errors, 10 = Run a workflow, 11 = Database action, 12 = Stored procedure.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Endpoint": {
            "type": "string",
            "description": "The endpoint URL the action calls.",
            "nullable": true,
            "example": "https://api.example.com/invoices/send"
          }
        },
        "additionalProperties": false
      },
      "EntityColorCodingResponse": {
        "type": "object",
        "properties": {
          "EntityColorCodingId": {
            "type": "string",
            "description": "The entity color coding's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Order": {
            "type": "integer",
            "description": "The position of this color coding among the entity's color codings, evaluated lowest first.",
            "format": "int32",
            "example": 0
          },
          "AppliesTo": {
            "type": "integer",
            "description": "Integer code for what the color coding applies to: 1 = Field, 2 = Row, 3 = Group, 4 = Duplicate field value.",
            "format": "int32",
            "example": 2
          },
          "BackgroundColor": {
            "$ref": "#/components/schemas/ColorResponse"
          },
          "TextColor": {
            "$ref": "#/components/schemas/ColorResponse"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Rules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityColorCodingRule"
            },
            "description": "The rules that determine when the color coding is applied.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this color coding.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityColorCodingRule": {
        "type": "object",
        "properties": {
          "EntityColorCodingRuleId": {
            "type": "string",
            "description": "The color coding rule's unique identifier.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Order": {
            "type": "integer",
            "description": "The position of this rule among the color coding's rules, evaluated lowest first.",
            "format": "int32",
            "example": 0
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the comparison operator the rule applies: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Value": {
            "$ref": "#/components/schemas/EntityRestrictionValueResponse"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityRestrictionValueResponse"
            },
            "description": "The set of comparison values, used for multi-value operators such as Between or One of.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityColorCodingRuleValueResponse": {
        "type": "object",
        "properties": {
          "EntityColorCodingRuleValueId": {
            "type": "string",
            "description": "The color coding rule value's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The position of this value within the rule's value set, evaluated lowest first.",
            "format": "int32",
            "example": 0
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for where the value comes from: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against when the value type is a constant.",
            "nullable": true,
            "example": "Active"
          },
          "DateValue": {
            "type": "integer",
            "description": "Integer code for a relative date when the value type is a date: 0 = Today, 1 = Yesterday, 2 = Tomorrow, 3 = Start of week, 4 = End of week, 5 = Start of month, 6 = End of month, 7 = Start of quarter, 8 = End of quarter, 9 = Start of year, 10 = End of year.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "VariableId": {
            "type": "string",
            "description": "The identifier of the variable supplying the value when the value type is a variable.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field supplying the value when the value type is a field.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false
      },
      "EntityDataLakeSplitResponse": {
        "type": "object",
        "properties": {
          "EntityDataLakeSplitId": {
            "type": "string",
            "description": "The data lake split's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the entity this data lake split belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field the data is split on.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Folder": {
            "type": "string",
            "description": "The folder the partitioned data is written to in the data lake; defaults to the split field's name when the split is created.",
            "nullable": true,
            "example": "OrderDate"
          },
          "Instance": {
            "type": "string",
            "description": "Optional instance qualifier for the partition; not set when the split is first created.",
            "nullable": true,
            "example": "Production"
          },
          "Code": {
            "type": "string",
            "description": "Optional code qualifier for the partition; not set when the split is first created.",
            "nullable": true,
            "example": "US"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiAttachmentResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiAttachmentId": {
            "type": "string",
            "description": "The AI attachment's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the attachment type, as consumed by the AI-chat/prompt detail builder: 1 = Selected record, 2 = All records, 3 = Detail, 4 = Parameters, 5 = List. The write request and controller do not pin which code set applies, so this mapping is inferred from the runtime consumer (AiChatHelper); a parallel set with different meanings also exists in the platform.",
            "format": "int32",
            "example": 1
          },
          "AttachmentId": {
            "type": "string",
            "description": "Identifier of the attached resource (for example a list or detail), when the attachment type references one.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiDataSourceResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiDataSourceId": {
            "type": "string",
            "description": "The entity detail AI data source's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ConnectorAiDataSource": {
            "$ref": "#/components/schemas/ConnectorAiDataSourceResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteApplyResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteApplyId": {
            "type": "string",
            "description": "The AI favorite apply rule's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ApplyToType": {
            "type": "integer",
            "description": "Integer code for the kind of subject the favorite is applied to: 1 = User, 2 = Team.",
            "format": "int32",
            "example": 1
          },
          "ApplyToId": {
            "type": "string",
            "description": "Identifier of the user or team the favorite is applied to, as indicated by ApplyToType.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteAttachmentResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteAttachmentId": {
            "type": "string",
            "description": "The AI favorite attachment's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "AttachmentType": {
            "type": "integer",
            "description": "Integer code for the attachment type, as consumed by the AI-chat/prompt detail builder: 1 = Selected record, 2 = All records, 3 = Detail, 4 = Parameters, 5 = List. The write request and controller do not pin which code set applies, so this mapping is inferred from the runtime consumer (AiChatHelper); a parallel set with different meanings also exists in the platform.",
            "format": "int32",
            "example": 5
          },
          "AttachmentId": {
            "type": "string",
            "description": "Identifier of the attached resource (for example a list or detail), when the attachment type references one.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteDataSourceResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteDataSourceId": {
            "type": "string",
            "description": "The AI favorite data source's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityDetailAiDataSource": {
            "$ref": "#/components/schemas/EntityDetailAiDataSourceResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteParameterListItemResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteParameterListItemId": {
            "type": "string",
            "description": "The list item's unique identifier.",
            "format": "uuid",
            "example": "5b1e0c9a-3d27-4f6b-9c84-1a2b3c4d5e6f"
          },
          "Key": {
            "type": "string",
            "description": "The stored value submitted when this list item is selected.",
            "nullable": true,
            "example": "US"
          },
          "Value": {
            "type": "string",
            "description": "The label shown to the user for this list item.",
            "nullable": true,
            "example": "United States"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteParameterResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteParameterId": {
            "type": "string",
            "description": "The parameter's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's internal name, referenced from the prompt.",
            "nullable": true,
            "example": "Region"
          },
          "Label": {
            "type": "string",
            "description": "The parameter's display label shown to the user.",
            "nullable": true,
            "example": "Sales Region"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the parameter's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 18 = Text.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the parameter represents: 1 = Parameter, 2 = Calculation.",
            "format": "int32",
            "example": 1
          },
          "Script": {
            "type": "string",
            "description": "The calculation script used to compute the parameter's value, when it is a calculation.",
            "nullable": true,
            "example": "[Quantity] * [Price]"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places used when displaying a numeric parameter.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "Integer code for how the default value is sourced: 0 = No default, 1 = Constant value, 2 = Date value, 3 = From a parameter, 4 = AI-generated.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "DefaultValueConstant": {
            "type": "string",
            "description": "The constant default value, used when the default value type is a constant.",
            "nullable": true,
            "example": "North America"
          },
          "DefaultValueDate": {
            "type": "integer",
            "description": "Integer code for a relative-date default, used when the default value type is a date: 0 = Today, 1 = Yesterday, 2 = Tomorrow, 5 = Start of month, 6 = End of month, 9 = Start of year, 10 = End of year, 36 = This month, 42 = This year.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for this parameter.",
            "nullable": true,
            "example": true
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the parameter's input field.",
            "nullable": true,
            "example": "Enter a region"
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterListItemResponse"
            },
            "description": "The selectable list items for this parameter when it is a list type.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite's unique identifier.",
            "format": "uuid",
            "example": "1d2f3a4b-5c6d-7e8f-9a0b-1c2d3e4f5a6b"
          },
          "Name": {
            "type": "string",
            "description": "The AI favorite's display name.",
            "nullable": true,
            "example": "Summarize Open Orders"
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text sent to the AI when the favorite is run.",
            "nullable": true,
            "example": "Summarize the open orders for the selected region."
          },
          "AiToneModifier": {
            "$ref": "#/components/schemas/AiToneModifierResponse"
          },
          "DataSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteDataSourceResponse"
            },
            "description": "The data sources the AI favorite draws from.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterResponse"
            },
            "description": "The parameters the user supplies when running the favorite.",
            "nullable": true
          },
          "Tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteToolResponse"
            },
            "description": "The AI tools available to the favorite.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this AI favorite.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiFavoriteToolResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteToolId": {
            "type": "string",
            "description": "The favorite-tool link's unique identifier.",
            "format": "uuid",
            "example": "9f8e7d6c-5b4a-3210-fedc-ba9876543210"
          },
          "EntityDetailAiTool": {
            "$ref": "#/components/schemas/EntityDetailAiToolResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailAiToolResponse": {
        "type": "object",
        "properties": {
          "EntityDetailAiToolId": {
            "type": "string",
            "description": "The entity-detail AI tool's unique identifier.",
            "format": "uuid",
            "example": "2a3b4c5d-6e7f-8091-a2b3-c4d5e6f70819"
          },
          "ConnectorAiTool": {
            "$ref": "#/components/schemas/ConnectorAiToolResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailFieldResponse": {
        "type": "object",
        "properties": {
          "EntityDetailFieldId": {
            "type": "string",
            "description": "The entity-detail field's unique identifier.",
            "format": "uuid",
            "example": "4e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8a9b"
          },
          "FieldId": {
            "type": "string",
            "description": "Identifier of the underlying entity field this detail field references.",
            "format": "uuid",
            "example": "8b7a6c5d-4e3f-2a1b-0c9d-8e7f6a5b4c3d"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailFilterResponse": {
        "type": "object",
        "properties": {
          "EntityDetailFilterId": {
            "type": "string",
            "description": "The detail filter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "FieldId": {
            "type": "string",
            "description": "The entity field the filter is applied to.",
            "format": "uuid",
            "example": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the comparison operator applied to the field: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailFilterValueResponse"
            },
            "description": "The values compared against the field by this filter.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this detail filter.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityDetailFilterValueResponse": {
        "type": "object",
        "properties": {
          "ValueType": {
            "type": "integer",
            "description": "Integer code for where the value comes from: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value used when the value type is Constant.",
            "nullable": true,
            "example": "Active"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field whose value is used when the value type is Field.",
            "format": "uuid",
            "nullable": true,
            "example": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code used when the value type is a date value.",
            "format": "int32",
            "nullable": true,
            "example": 5
          }
        },
        "additionalProperties": false
      },
      "EntityDetailItemResponse": {
        "type": "object",
        "properties": {
          "EntityDetailItemId": {
            "type": "string",
            "description": "The detail item's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "DetailItemId": {
            "type": "string",
            "description": "Identifier of the item included in the detail.",
            "format": "uuid",
            "example": "b7e4a1c2-9d3f-4a6b-8c5e-1f2a3b4c5d6e"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this detail item.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityDetailParameterResponse": {
        "type": "object",
        "properties": {
          "EntityDetailParameterId": {
            "type": "string",
            "description": "The detail parameter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Key": {
            "type": "string",
            "description": "The parameter's key/name.",
            "nullable": true,
            "example": "CustomerId"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for where the parameter's value comes from: 1 = Constant, 2 = Field, 3 = Date, 4 = Variable, 6 = Fiscal period, 7 = Fiscal year.",
            "format": "int32",
            "example": 1
          },
          "ValueConstant": {
            "type": "string",
            "description": "The literal value used when the value type is Constant.",
            "nullable": true,
            "example": "1000"
          },
          "ValueField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityDetailResponse": {
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The detail's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "RelatedEntityId": {
            "type": "string",
            "description": "The related entity the detail draws its records from.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The detail's display name.",
            "nullable": true,
            "example": "Order Lines"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the kind of detail: 1 = Related list, 2 = Singleton, 3 = Summary, 4 = Shipping tracking, 5 = iFrame, 6 = Group, 7 = Image, 8 = AI prompt, 9 = File, 10 = AI chat.",
            "format": "int32",
            "example": 1
          },
          "DisplayType": {
            "type": "integer",
            "description": "Integer code for how the detail is rendered relative to the record: 0 = Not displayed, 1 = Below the record, 2 = Right of the record, 3 = Drill-down, 5 = Field drill-down.",
            "format": "int32",
            "example": 1
          },
          "ViewType": {
            "type": "integer",
            "description": "Integer code for the view used to render the detail: 0 = List, 1 = Chart, 2 = Pivot, 3 = Spreadsheet, 4 = Board, 5 = Calendar, 6 = Text, 7 = Map, 8 = Image, 9 = Card, 11 = Summary, 12 = iFrame, 14 = Singleton, 15 = Shipping, 20 = Search, 22 = Action form, 23 = AI chat, 24 = File preview, 25 = Markdown.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Url": {
            "type": "string",
            "description": "URL opened by the detail, for URL or embed panels. Supports field tokens.",
            "nullable": true,
            "example": "https://example.com/customers/{CustomerId}"
          },
          "TrackingNumberFieldId": {
            "type": "string",
            "description": "The field holding the tracking number, for shipping-tracking details.",
            "format": "uuid",
            "nullable": true,
            "example": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
          },
          "ChartType": {
            "type": "integer",
            "description": "Integer code for the chart type: 0 = Column, 1 = Bar, 2 = Pie, 3 = Doughnut, 4 = Area, 5 = Line, 6 = Funnel, 7 = Big number.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records included in the detail.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "CategoryFieldId": {
            "type": "string",
            "description": "The field used as the chart's category axis.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "ValueFieldId": {
            "type": "string",
            "description": "The field used as the chart's value axis.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "MaxCategories": {
            "type": "integer",
            "description": "Maximum number of categories shown in the chart.",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "ShowOthers": {
            "type": "boolean",
            "description": "When true, remaining categories beyond the maximum are grouped into an \"Others\" category.",
            "nullable": true,
            "example": true
          },
          "ShowCategoryLabels": {
            "type": "boolean",
            "description": "When true, category labels are shown on the chart.",
            "nullable": true,
            "example": true
          },
          "ShowValueLabels": {
            "type": "boolean",
            "description": "When true, value labels are shown on the chart.",
            "nullable": true,
            "example": true
          },
          "ShowLegend": {
            "type": "boolean",
            "description": "When true, the chart legend is shown.",
            "nullable": true,
            "example": true
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for how chart values are aggregated: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ChartSort": {
            "type": "integer",
            "description": "Integer code for how chart results are sorted: 0 = Category ascending, 1 = Category descending, 2 = Value ascending, 3 = Value descending.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "TextFormat": {
            "type": "integer",
            "description": "Integer code for the text output format: 1 = CSV, 2 = JSON, 3 = XML, 4 = Markdown.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "TextShowHeaders": {
            "type": "boolean",
            "description": "When true, column headers are included in the text output.",
            "nullable": true,
            "example": true
          },
          "TextRemoveBlanks": {
            "type": "boolean",
            "description": "When true, blank values are removed from the text output.",
            "nullable": true,
            "example": false
          },
          "AiConnector": {
            "$ref": "#/components/schemas/SimpleConnectorResponse"
          },
          "AiModel": {
            "$ref": "#/components/schemas/AiModelResponse"
          },
          "AiToneModifier": {
            "$ref": "#/components/schemas/AiToneModifierResponse"
          },
          "AiPromptType": {
            "type": "integer",
            "description": "Integer code for how an AI-prompt detail's prompt is sourced: 1 = Fixed prompt defined in the configuration, 2 = Prompt supplied by the user at run time.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "AiPrompt": {
            "type": "string",
            "description": "Prompt text sent to the AI model, for AI panels.",
            "nullable": true,
            "example": "Summarize this order in two sentences."
          },
          "AiOutputType": {
            "type": "integer",
            "description": "Integer code for the AI output format.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "AiAllowConversation": {
            "type": "boolean",
            "description": "When true, the user may continue the AI conversation after the initial response.",
            "nullable": true,
            "example": true
          },
          "AiShowInitialPrompt": {
            "type": "boolean",
            "description": "When true, the initial prompt is shown to the user.",
            "nullable": true,
            "example": true
          },
          "AiAttachDatabaseSchema": {
            "type": "boolean",
            "description": "When true, the database schema is attached to the AI context.",
            "nullable": true,
            "example": false
          },
          "AiListDisplayType": {
            "type": "integer",
            "description": "Integer code for how AI list results are displayed.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "AiAllowToneChanges": {
            "type": "boolean",
            "description": "When true, the user may change the AI tone.",
            "nullable": true,
            "example": true
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailFieldResponse"
            },
            "description": "The fields displayed by the detail. Populated only when the endpoint includes field detail.",
            "nullable": true
          },
          "Filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailFilterResponse"
            },
            "description": "The filters applied to the detail's records. Populated only when the endpoint includes filter detail.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailParameterResponse"
            },
            "description": "The parameters passed to the detail. Populated only when the endpoint includes parameter detail.",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailItemResponse"
            },
            "description": "The items included in the detail, for group details. Populated only when the endpoint includes item detail.",
            "nullable": true
          },
          "Variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailVariableResponse"
            },
            "description": "The variables defined on the detail. Populated only when the endpoint includes variable detail.",
            "nullable": true
          },
          "AiTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiToolResponse"
            },
            "description": "The AI tools available to the detail. Populated only when the endpoint includes AI tool detail.",
            "nullable": true
          },
          "Options": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Integer codes for the options enabled on the detail.",
            "nullable": true
          },
          "ColorPalette": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The colors used by the detail's chart palette.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this detail.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityDetailVariableResponse": {
        "type": "object",
        "properties": {
          "EntityDetailVariableId": {
            "type": "string",
            "description": "The detail variable's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for where the variable's value comes from: 0 = Default, 1 = Parent field, 2 = Parent variable, 3 = Date constant, 4 = Constant.",
            "format": "int32",
            "example": 0
          },
          "Value": {
            "type": "string",
            "description": "Identifier of the field or variable supplying the value, when the value type references one.",
            "format": "uuid",
            "nullable": true,
            "example": "b7e4a1c2-9d3f-4a6b-8c5e-1f2a3b4c5d6e"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value used when the value type is Constant.",
            "nullable": true,
            "example": "Active"
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code used when the value type is a date constant.",
            "format": "int32",
            "nullable": true,
            "example": 5
          },
          "VariableValue": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this detail variable.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityFieldListItemResponse": {
        "type": "object",
        "properties": {
          "EntityFieldListItemId": {
            "type": "string",
            "description": "The list item's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Item": {
            "type": "string",
            "description": "The display text shown for the list item.",
            "nullable": true,
            "example": "Active"
          },
          "Value": {
            "type": "string",
            "description": "The underlying value stored for the list item.",
            "nullable": true,
            "example": "1"
          }
        },
        "additionalProperties": false
      },
      "EntityFieldResponse": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The field's unique identifier.",
            "format": "uuid",
            "example": "6a1b2c3d-4e5f-4081-9a2b-3c4d5e6f7081"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the entity this field belongs to.",
            "format": "uuid",
            "example": "2c4e6a8b-1d3f-4509-a7b2-9c0d1e2f3a4b"
          },
          "FieldNumber": {
            "type": "integer",
            "description": "The field's position number within the entity.",
            "format": "int32",
            "example": 3
          },
          "Name": {
            "type": "string",
            "description": "The field's internal name.",
            "nullable": true,
            "example": "CustomerName"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the field's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 14 = Skype, 15 = Twitter, 16 = Color, 17 = Address, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension, 26 = Date and time.",
            "format": "int32",
            "example": 1
          },
          "DefaultField": {
            "type": "boolean",
            "description": "Whether the field is shown by default.",
            "nullable": true,
            "example": true
          },
          "ColumnNumber": {
            "type": "integer",
            "description": "The field's display order among the entity's columns.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "SortNumber": {
            "type": "integer",
            "description": "The order in which this field is applied when sorting, lowest first.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "SortDirection": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "ColumnWidth": {
            "type": "integer",
            "description": "The display width of the field's column, in pixels.",
            "format": "int32",
            "nullable": true,
            "example": 150
          },
          "DisplayName": {
            "type": "string",
            "description": "The field's display name.",
            "nullable": true,
            "example": "Customer Name"
          },
          "Description": {
            "type": "boolean",
            "description": "Whether this field is used as the record's description.",
            "nullable": true,
            "example": false
          },
          "KeyNumber": {
            "type": "integer",
            "description": "The field's position among the entity's key fields.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "GroupName": {
            "type": "string",
            "description": "Name of the group this field is displayed under.",
            "nullable": true,
            "example": "Address"
          },
          "GroupFieldName": {
            "type": "string",
            "description": "Internal name of the grouping field.",
            "nullable": true,
            "example": "AddressGroup"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places shown for numeric values.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "TableName": {
            "type": "string",
            "description": "Name of the source table the field is read from.",
            "nullable": true,
            "example": "Customer"
          },
          "ReadOnly": {
            "type": "boolean",
            "description": "Whether the field is read-only.",
            "nullable": true,
            "example": false
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field that supplies the currency code for this value.",
            "format": "uuid",
            "nullable": true,
            "example": "4d8c2f1a-9b3e-4a70-8c5d-1e6f0a2b3c4d"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field that supplies the number of decimal places for this value.",
            "format": "uuid",
            "nullable": true,
            "example": "5e9d3a2b-0c4f-4b81-9d6e-2f7a1b3c4d5e"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the field is hidden from display.",
            "nullable": true,
            "example": false
          },
          "FieldsRequired": {
            "type": "string",
            "description": "Comma-separated list of field names required to evaluate this calculated field.",
            "nullable": true,
            "example": "Quantity,UnitPrice"
          },
          "ApiName": {
            "type": "string",
            "description": "The field's name as exposed through the API.",
            "nullable": true,
            "example": "customerName"
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the field: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank without ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseTimespanUnit": {
            "type": "integer",
            "description": "Integer code for the unit a duration value is stored in: 1 = Seconds, 2 = Minutes, 3 = Hours, 4 = Days, 5 = Minutes and seconds, 6 = Hours and minutes, 7 = Hours, minutes and seconds.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "DisplayTimespanUnit": {
            "type": "integer",
            "description": "Integer code for the unit a duration value is displayed in: 1 = Seconds, 2 = Minutes, 3 = Hours, 4 = Days, 5 = Minutes and seconds, 6 = Hours and minutes, 7 = Hours, minutes and seconds.",
            "format": "int32",
            "nullable": true,
            "example": 6
          },
          "FieldsRequiredForCalculation": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The field names required to evaluate this calculated field, split into a list.",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "Expression used to compute the field's value. Populated only for calculated fields.",
            "nullable": true,
            "example": "[Quantity] * [UnitPrice]"
          },
          "DimensionField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "DimensionId": {
            "type": "string",
            "description": "Identifier of the dimension this field is based on.",
            "nullable": true,
            "example": "0d8a1b2c-3e4f-4506-a7b8-9c0d1e2f3a4b"
          },
          "UseLookupForListItems": {
            "type": "boolean",
            "description": "Whether list item values are resolved by looking them up in another entity.",
            "nullable": true,
            "example": false
          },
          "ListItemEntity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "ListItemValueField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "ListItemDisplayField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldListItemResponseModel"
            },
            "description": "The fixed list items defined for this field.",
            "nullable": true
          },
          "ListItemRestrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItemRestriction"
            },
            "description": "Restrictions that limit which list items are available.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this field.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityGroupResponse": {
        "type": "object",
        "properties": {
          "EntityGroupId": {
            "type": "string",
            "description": "The entity group's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The entity group's display name.",
            "nullable": true,
            "example": "Sales"
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixColumnResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixColumnId": {
            "type": "string",
            "description": "The matrix column's unique identifier.",
            "format": "uuid",
            "example": "1f8e3a2b-6c4d-4e90-a7b3-2d5f9c0e1a4b"
          },
          "Name": {
            "type": "string",
            "description": "The matrix column's display name.",
            "nullable": true,
            "example": "Total Sales"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the matrix column type: 1 = Filter, 2 = Summary, 3 = Calculation, 4 = Label.",
            "format": "int32",
            "example": 2
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the column: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank without ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "example": 1
          },
          "BaseFieldId": {
            "type": "string",
            "description": "Identifier of the base field this column filters on. Populated only for filter columns.",
            "format": "uuid",
            "nullable": true,
            "example": "4d8c2f1a-9b3e-4a70-8c5d-1e6f0a2b3c4d"
          },
          "Script": {
            "type": "string",
            "description": "Expression used to compute the column's value. Populated only for calculation columns.",
            "nullable": true,
            "example": "[Quantity] * [UnitPrice]"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field that this column maps to.",
            "format": "uuid",
            "example": "6a1b2c3d-4e5f-4081-9a2b-3c4d5e6f7081"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the column's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 14 = Skype, 15 = Twitter, 16 = Color, 17 = Address, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension, 26 = Date and time. Populated for calculation and summary columns.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "SummaryColumns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixColumnSummaryResponse"
            },
            "description": "The summary items that make up this column. Populated only for summary columns.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this matrix column.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixColumnSummaryResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixSummaryItemId": {
            "type": "string",
            "description": "The matrix summary item's unique identifier.",
            "format": "uuid",
            "example": "9b2f4c1e-3d6a-4f80-b1c2-7e5a8d9f0a1b"
          },
          "CustomEntityMatrixColumnId": {
            "type": "string",
            "description": "Identifier of the matrix column that is summarized by this item.",
            "format": "uuid",
            "example": "1f8e3a2b-6c4d-4e90-a7b3-2d5f9c0e1a4b"
          },
          "ColumnName": {
            "type": "string",
            "description": "Display name of the summarized matrix column.",
            "nullable": true,
            "example": "Total Sales"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this summary item.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixFilterResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixFilterId": {
            "type": "string",
            "description": "The matrix filter's unique identifier.",
            "format": "uuid",
            "example": "8e2d4f1c-7a3b-4c90-b5d6-1f8a2e3c4d5e"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the matrix entity this filter belongs to.",
            "format": "uuid",
            "example": "2c4e6a8b-1d3f-4509-a7b2-9c0d1e2f3a4b"
          },
          "AppliesToType": {
            "type": "integer",
            "description": "Integer code for what the filter applies to: 1 = Column, 2 = Row.",
            "format": "int32",
            "example": 1
          },
          "AppliesToId": {
            "type": "string",
            "description": "Identifier of the matrix row or column the filter applies to, as indicated by AppliesToType.",
            "format": "uuid",
            "example": "1f8e3a2b-6c4d-4e90-a7b3-2d5f9c0e1a4b"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field the filter is evaluated against.",
            "format": "uuid",
            "example": "6a1b2c3d-4e5f-4081-9a2b-3c4d5e6f7081"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
            },
            "description": "The values compared by the filter.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixFilterValueResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixFilterValueId": {
            "type": "string",
            "description": "The matrix filter value's unique identifier.",
            "format": "uuid",
            "example": "9b7c1e34-2a8d-4f06-bf21-5e3c0a1d77ab"
          },
          "CustomEntityMatrixFilterId": {
            "type": "string",
            "description": "Identifier of the matrix filter this value belongs to.",
            "format": "uuid",
            "example": "1d2c3b4a-5e6f-4708-9a0b-1c2d3e4f5061"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of this value within the filter (for operators that take multiple values, such as Between or One of).",
            "format": "int32",
            "example": 1
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "Literal value used when the value type is Constant.",
            "nullable": true,
            "example": "1000"
          },
          "DateValue": {
            "type": "integer",
            "description": "Relative date offset used when the value type is Date.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixRowResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixRowId": {
            "type": "string",
            "description": "The matrix row's unique identifier.",
            "format": "uuid",
            "example": "4a1f9c2e-7b53-4d8a-9e10-6c2f3a4b5d6e"
          },
          "Name": {
            "type": "string",
            "description": "The matrix row's display name.",
            "nullable": true,
            "example": "Region"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the row represents: 1 = Filter, 2 = Dynamic (one row per distinct value), 3 = Summary, 4 = Calculation.",
            "format": "int32",
            "example": 2
          },
          "BaseFieldId": {
            "type": "string",
            "description": "Identifier of the field the row is based on.",
            "format": "uuid",
            "nullable": true,
            "example": "8c5d2a1b-3e4f-4061-9a2b-7c8d9e0f1a2b"
          },
          "Script": {
            "type": "string",
            "description": "Expression used when the row is a Calculation.",
            "nullable": true,
            "example": "[Amount] * 2"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the field's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 16 = Color, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the row: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank breaking ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of rows to generate for a Dynamic row.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "Granularity": {
            "type": "integer",
            "description": "Integer code for the date grouping granularity when the row is based on a date field: 1 = Full date, 2 = Day of month, 3 = Day of week, 4 = Month, 5 = Year, 6 = Month and year, 7 = Fiscal period, 8 = Fiscal year, 9 = Fiscal period and year.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "SortType": {
            "type": "integer",
            "description": "Integer code for how the row's values are sorted: 0 = No sorting, 1 = By a field, 2 = By a column.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "SortColumn": {
            "type": "string",
            "description": "Identifier of the column the row is sorted by when SortType is By a column.",
            "format": "uuid",
            "nullable": true,
            "example": "2f3e4d5c-6b7a-4089-9c0d-1e2f3a4b5c6d"
          },
          "SortDescending": {
            "type": "boolean",
            "description": "Whether the row is sorted in descending order.",
            "nullable": true,
            "example": false
          },
          "HideEmptyRows": {
            "type": "boolean",
            "description": "Whether rows with no values are hidden.",
            "nullable": true,
            "example": true
          },
          "SummaryRows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixRowSummaryResponse"
            },
            "description": "The summary items referenced by this row. Populated only when the row is a Summary row.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this matrix row.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixRowSummaryResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixSummaryItemId": {
            "type": "string",
            "description": "The summary item's unique identifier.",
            "format": "uuid",
            "example": "7e8d9c0b-1a2f-4304-9506-7a8b9c0d1e2f"
          },
          "CustomEntityMatrixRowId": {
            "type": "string",
            "description": "Identifier of the matrix row this summary item references.",
            "format": "uuid",
            "example": "4a1f9c2e-7b53-4d8a-9e10-6c2f3a4b5d6e"
          },
          "RowName": {
            "type": "string",
            "description": "Display name of the referenced matrix row.",
            "nullable": true,
            "example": "Region"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this summary item.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityMatrixValueResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixValueId": {
            "type": "string",
            "description": "The matrix value (column) unique identifier.",
            "format": "uuid",
            "example": "5c6b7a8d-9e0f-4112-9304-5a6b7c8d9e0f"
          },
          "Name": {
            "type": "string",
            "description": "The matrix value's display name.",
            "nullable": true,
            "example": "Total Sales"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the column represents: 1 = Filter, 2 = Summary, 3 = Calculation, 4 = Label.",
            "format": "int32",
            "example": 2
          },
          "Order": {
            "type": "integer",
            "description": "Position of the value among the matrix columns.",
            "format": "int32",
            "example": 0
          },
          "BaseFieldId": {
            "type": "string",
            "description": "Identifier of the field the value is based on.",
            "format": "uuid",
            "nullable": true,
            "example": "8c5d2a1b-3e4f-4061-9a2b-7c8d9e0f1a2b"
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the value: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank breaking ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Calculation": {
            "type": "string",
            "description": "Expression used when the value is a Calculation.",
            "nullable": true,
            "example": "[Amount] * [Quantity]"
          }
        },
        "additionalProperties": false
      },
      "EntityMergeCompanyResponse": {
        "type": "object",
        "properties": {
          "CustomMergeCompanyId": {
            "type": "string",
            "description": "The merge company's unique identifier.",
            "format": "uuid",
            "example": "6d7e8f90-1a2b-4c3d-9e4f-5a6b7c8d9e0f"
          },
          "CustomMergeEntityId": {
            "type": "string",
            "description": "Identifier of the merge entity this company belongs to.",
            "format": "uuid",
            "example": "2b3c4d5e-6f70-4182-9304-5a6b7c8d9e0f"
          },
          "CompanyId": {
            "type": "string",
            "description": "Identifier of the connector company included in the merge.",
            "format": "uuid",
            "example": "9a0b1c2d-3e4f-4506-9708-1a2b3c4d5e6f"
          }
        },
        "additionalProperties": false
      },
      "EntityMergeFieldResponse": {
        "type": "object",
        "properties": {
          "CustomMergeFieldId": {
            "type": "string",
            "description": "The merge field's unique identifier.",
            "format": "uuid",
            "example": "3c4d5e6f-7a8b-4901-9234-5a6b7c8d9e0f"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the underlying base field that is mapped.",
            "format": "uuid",
            "example": "8c5d2a1b-3e4f-4061-9a2b-7c8d9e0f1a2b"
          },
          "CustomMergeEntityId": {
            "type": "string",
            "description": "Identifier of the merge entity this field belongs to.",
            "format": "uuid",
            "example": "2b3c4d5e-6f70-4182-9304-5a6b7c8d9e0f"
          },
          "CustomEntityFieldId": {
            "type": "string",
            "description": "Identifier of the parent merged-entity field this base field maps to.",
            "format": "uuid",
            "example": "7a8b9c0d-1e2f-4304-9506-7a8b9c0d1e2f"
          },
          "Negative": {
            "type": "boolean",
            "description": "Whether the field's value is negated (subtracted) when combined in the merge.",
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false
      },
      "EntityMergeResponse": {
        "type": "object",
        "properties": {
          "CustomMergeEntityId": {
            "type": "string",
            "description": "Unique identifier of this merge-entity link within the merged custom entity.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the source entity (list) being merged in as a member of the merged custom entity.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "CustomEntityId": {
            "type": "string",
            "description": "Identifier of the merged custom entity that this link belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Alias": {
            "type": "string",
            "description": "Display alias used for the merged source within the custom entity.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMergeFieldResponse"
            },
            "description": "The field mappings between the source entity and the merged custom entity. Populated only when the endpoint includes field detail.",
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMergeCompanyResponse"
            },
            "description": "The companies (connector organizations) the merged source draws data from. Populated only when the endpoint includes company detail.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this merge entity.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityResponseModel": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityRestOptimizationResponse": {
        "type": "object",
        "properties": {
          "EntityRestOptimizationId": {
            "type": "string",
            "description": "The REST optimization's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for where the optimization is applied on the REST request: 1 = Header, 2 = Parameter, 3 = Body, 4 = Placeholder.",
            "format": "int32",
            "example": 2
          },
          "Key": {
            "type": "string",
            "description": "The key (header name, query-parameter name, or body key) the optimized value is written to.",
            "nullable": true,
            "example": "customerId"
          },
          "Operator": {
            "type": "integer",
            "description": "Integer code for the comparison operator the optimization matches: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this optimization.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityRestParameterResponse": {
        "type": "object",
        "properties": {
          "EntityRestParameterId": {
            "type": "string",
            "description": "The REST parameter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for where the parameter is placed on the REST request: 1 = URL parameter, 2 = Header, 3 = Body.",
            "format": "int32",
            "example": 1
          },
          "Key": {
            "type": "string",
            "description": "The parameter's key (header name, query-parameter name, or body key).",
            "nullable": true,
            "example": "api-version"
          },
          "Value": {
            "type": "string",
            "description": "The parameter's value sent on the request.",
            "nullable": true,
            "example": "2024-01-01"
          },
          "RemoveWhenEmptyValue": {
            "type": "boolean",
            "description": "Whether the parameter is omitted from the request when its value is empty.",
            "nullable": true,
            "example": true
          },
          "DoNotUrlEncode": {
            "type": "boolean",
            "description": "Whether the parameter value is sent as-is without URL encoding.",
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false
      },
      "EntityRestrictionResponse": {
        "type": "object",
        "properties": {
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator the restriction applies: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityRestrictionValueResponse"
            },
            "description": "The values the restriction compares the field against.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of this value within the restriction (for example to order the two bounds of a Between restriction).",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for the kind of value supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter, 100 = Default. Determines which of the value properties below is populated.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant the field is compared against. Populated when the value type is Constant.",
            "nullable": true,
            "example": "Active"
          },
          "DateValue": {
            "type": "integer",
            "description": "Relative-date code the field is compared against, drawn from the product's relative-date set (for example 0 = Today, 1 = Yesterday, 2 = Tomorrow, 5 = Start of month, 6 = End of month, 9 = Start of year, 10 = End of year; valid codes run 0 through 56). Populated when the value type is Date.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Variable": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityTableFieldResponse": {
        "type": "object",
        "properties": {
          "EntityTableFieldSummaryId": {
            "type": "string",
            "description": "Unique identifier of the field-summary record linking the field to its table.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "EntityTableId": {
            "type": "string",
            "description": "Identifier of the table this field belongs to.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the underlying entity field.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for how the field is aggregated: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "DateMethod": {
            "type": "integer",
            "description": "Integer code for the date-grouping summary method applied to a date field (for example grouping by day, month, quarter or year).",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "ReverseSign": {
            "type": "boolean",
            "description": "When true, reverses the sign of the field's numeric values in the aggregation.",
            "nullable": true,
            "example": false
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityTableJoinResponse": {
        "type": "object",
        "properties": {
          "EntityTableJoinId": {
            "type": "string",
            "description": "Unique identifier of the table join.",
            "format": "uuid",
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "FromFieldId": {
            "type": "string",
            "description": "Identifier of the source field (on this table) used to match the joined table.",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ToFieldId": {
            "type": "string",
            "description": "Identifier of the target field (on the joined table) matched against the source field.",
            "nullable": true,
            "example": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"
          }
        },
        "additionalProperties": false
      },
      "EntityTableResponse": {
        "type": "object",
        "properties": {
          "EntityTableId": {
            "type": "string",
            "description": "Unique identifier of the table.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The table's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "DatabaseName": {
            "type": "string",
            "description": "The underlying database table name.",
            "nullable": true,
            "example": "SOP10100"
          },
          "Script": {
            "type": "string",
            "description": "Custom SQL script used as the table's data source, when defined instead of a plain table.",
            "nullable": true,
            "example": "select * from SOP10100 where SOPTYPE = 2"
          },
          "Alias": {
            "type": "string",
            "description": "Short alias used to reference the table in the generated query.",
            "nullable": true,
            "example": "so"
          },
          "JoinToTableId": {
            "type": "string",
            "description": "Identifier of the table this table joins to, when it is a joined table.",
            "format": "uuid",
            "nullable": true,
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "JoinType": {
            "type": "integer",
            "description": "Integer code for the join method used to relate this table to the table it joins to (for example inner or outer join).",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "TableNumber": {
            "type": "integer",
            "description": "Ordinal position of the table within the entity's set of tables.",
            "format": "int32",
            "example": 1
          },
          "JoinFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableJoinResponse"
            },
            "description": "The field pairs that define how this table joins to another table.",
            "nullable": true
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableRestrictionResponse"
            },
            "description": "The filters applied to this table's rows.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this table.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityTableRestrictionResponse": {
        "type": "object",
        "properties": {
          "EntityTableRestrictionId": {
            "type": "string",
            "description": "Unique identifier of the table restriction.",
            "format": "uuid",
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "EntityTableId": {
            "type": "string",
            "description": "Identifier of the table this restriction applies to.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the field the restriction filters on.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Value": {
            "$ref": "#/components/schemas/EntityRestrictionValueResponse"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityRestrictionValueResponse"
            },
            "description": "The comparison values, for operators that take multiple values such as Between or One of.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "EntityTableRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "EntityTableRestrictionValueId": {
            "type": "string",
            "description": "Unique identifier of the restriction value.",
            "format": "uuid",
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of this value within its restriction, used to order multiple values such as the two ends of a Between range.",
            "format": "int32",
            "example": 1
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for the kind of value: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter, 100 = Default.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against, when the value type is a constant.",
            "nullable": true,
            "example": "1000"
          },
          "DateValue": {
            "type": "integer",
            "description": "The numeric date value to compare against, when the value type is a date.",
            "format": "int32",
            "nullable": true,
            "example": 20240312
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "EntityVariableListItemResponse": {
        "type": "object",
        "properties": {
          "EntityVariableListItemId": {
            "type": "string",
            "description": "Unique identifier of the variable list item.",
            "format": "uuid",
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "Key": {
            "type": "string",
            "description": "The list item's stored key.",
            "nullable": true,
            "example": "US"
          },
          "Value": {
            "type": "string",
            "description": "The display value shown for the key.",
            "nullable": true,
            "example": "United States"
          }
        },
        "additionalProperties": false
      },
      "EntityVariableResponse": {
        "type": "object",
        "properties": {
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Entity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "Name": {
            "type": "string",
            "description": "The variable's name.",
            "nullable": true,
            "example": "StartDate"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the variable's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 16 = Color, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension.",
            "format": "int32",
            "example": 2
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "Integer code for how the default value is sourced: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "DefaultValue": {
            "type": "string",
            "description": "The default value applied to the variable, interpreted per DefaultValueType.",
            "nullable": true,
            "example": "2024-01-01"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for the variable.",
            "nullable": true,
            "example": true
          },
          "Order": {
            "type": "integer",
            "description": "The display order of the variable relative to other variables on the entity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "AllowMultiple": {
            "type": "boolean",
            "description": "Whether the variable accepts multiple values.",
            "nullable": true,
            "example": false
          },
          "DisplayAsList": {
            "type": "boolean",
            "description": "Whether the variable is presented to the user as a selectable list.",
            "nullable": true,
            "example": false
          },
          "LookupEntity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "LookupValueField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "LookupDisplayField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Label": {
            "type": "string",
            "description": "The label shown to the user for the variable.",
            "nullable": true,
            "example": "Start date"
          },
          "Fixed": {
            "type": "boolean",
            "description": "Whether the variable's value is fixed and cannot be changed by the user.",
            "nullable": true,
            "example": false
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the variable is hidden from the user.",
            "nullable": true,
            "example": false
          },
          "ListItemField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Tooltip": {
            "type": "string",
            "description": "Help text shown to the user for the variable.",
            "nullable": true,
            "example": "Enter the date the report should begin."
          },
          "Script": {
            "type": "string",
            "description": "The expression evaluated to produce the value of a calculated variable.",
            "nullable": true,
            "example": "[OrderDate] + 30"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the variable type: 1 = User, 2 = Calculated.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "The number of decimal places displayed for numeric variables.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityVariableListItemResponse"
            },
            "description": "The predefined list items available for the variable. Populated only when the variable is displayed as a list.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "Status": {
            "type": "string",
            "nullable": true
          },
          "Error": {
            "type": "string",
            "nullable": true
          },
          "ErrorDescription": {
            "type": "string",
            "nullable": true
          },
          "ErrorNumber": {
            "type": "integer",
            "format": "int32"
          }
        },
        "additionalProperties": false
      },
      "ExchangeTokenResponse": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "The authentication token issued for the session.",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "api": {
            "type": "string",
            "description": "The base URL of the API region the token is valid for.",
            "nullable": true,
            "example": "https://api.popdock.com"
          },
          "requiresMfa": {
            "type": "boolean",
            "description": "Whether multi-factor authentication is still required to complete sign-in.",
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false
      },
      "ExportRequest": {
        "type": "object",
        "properties": {
          "Filename": {
            "type": "string",
            "description": "The filename for the generated export download. Defaults to `export.json` when omitted.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "An optional description stored with the export.",
            "nullable": true
          },
          "Resources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExportResourceRequest"
            },
            "description": "The resources to include in the export.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields describing a set of resources to export as a downloadable package."
      },
      "ExportResourceRequest": {
        "type": "object",
        "properties": {
          "Type": {
            "type": "integer",
            "description": "Integer code for the kind of resource being exported (e.g. connector, entity, favorite).",
            "format": "int32"
          },
          "Id": {
            "type": "string",
            "description": "The identifier of the resource to export.",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "description": "An optional display name for the resource.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single resource to include in an export."
      },
      "ExternalUserResponse": {
        "type": "object",
        "properties": {
          "UserId": {
            "type": "string",
            "description": "The user's unique identifier.",
            "format": "uuid",
            "example": "8a1f2c3d-5b6e-4a7f-9c0d-1e2f3a4b5c6d"
          },
          "Name": {
            "type": "string",
            "description": "The user's display name.",
            "nullable": true,
            "example": "Jane Smith"
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the user's status: 0 = Inactive, 1 = Active.",
            "format": "int32",
            "example": 1
          },
          "AiPersonalPreferences": {
            "type": "string",
            "description": "Free-text personal preferences applied to the user's AI interactions.",
            "nullable": true,
            "example": "Prefer concise answers and summarize tables."
          }
        },
        "additionalProperties": false
      },
      "FavoriteColumnResponse": {
        "type": "object",
        "properties": {
          "FavoriteColumnId": {
            "type": "string",
            "description": "The favorite column's unique identifier.",
            "format": "uuid",
            "example": "1d2e3f4a-5b6c-7d8e-9f0a-1b2c3d4e5f6a"
          },
          "Field": {
            "$ref": "#/components/schemas/FavoriteFieldResponse"
          },
          "ColumnNumber": {
            "type": "integer",
            "description": "The column's position in the list, left to right.",
            "format": "int32",
            "example": 1
          },
          "ColumnWidth": {
            "type": "integer",
            "description": "The column's display width in pixels.",
            "format": "int32",
            "nullable": true,
            "example": 120
          },
          "SortNumber": {
            "type": "integer",
            "description": "The column's position in the sort order, lowest first.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "SortDirection": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "GroupNumber": {
            "type": "integer",
            "description": "The column's position in the grouping order, lowest first.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "GroupDirection": {
            "type": "integer",
            "description": "Integer code for the grouping direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the column: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ConversionType": {
            "type": "integer",
            "description": "Integer code for the value conversion applied to the column, such as a currency or unit conversion. Null when no conversion is applied.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "PivotValueNumber": {
            "type": "integer",
            "description": "The column's position among the value fields in a pivot layout.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "PivotColumnNumber": {
            "type": "integer",
            "description": "The column's position among the column fields in a pivot layout.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "PivotRowNumber": {
            "type": "integer",
            "description": "The column's position among the row fields in a pivot layout.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for the column.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteFieldResponse": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field's unique identifier.",
            "format": "uuid",
            "example": "0f8fad5b-d9cb-469f-a165-70867728950e"
          },
          "Name": {
            "type": "string",
            "description": "The field's internal name.",
            "nullable": true,
            "example": "OrderTotal"
          },
          "DisplayName": {
            "type": "string",
            "description": "The field's display name shown to the user.",
            "nullable": true,
            "example": "Order Total"
          },
          "Type": {
            "type": "string",
            "description": "The field's data type description.",
            "nullable": true,
            "example": "Currency"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "The number of decimal places displayed for the field.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleFieldListItem"
            },
            "description": "The predefined list items available for the field, when it is a list field.",
            "nullable": true
          },
          "JsonName": {
            "type": "string",
            "description": "The display name with spaces and quote characters removed, suitable for use as a JSON property name.",
            "nullable": true,
            "readOnly": true,
            "example": "OrderTotal"
          }
        },
        "additionalProperties": false
      },
      "FavoriteResponse": {
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The favorite's display name.",
            "nullable": true,
            "example": "Open Sales Orders"
          },
          "UserId": {
            "type": "string",
            "description": "Identifier of the user that owns the favorite.",
            "format": "uuid",
            "example": "9b2e1f4a-6c3d-4e58-8a17-2d4f6b8c0e91"
          },
          "Entity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "Connector": {
            "$ref": "#/components/schemas/SimpleConnectorResponse"
          },
          "Currency": {
            "type": "string",
            "description": "Currency code applied to the favorite's monetary values, taken from the requesting user's currency.",
            "nullable": true,
            "example": "USD"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the favorite was created.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-12"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records the favorite returns.",
            "format": "int64",
            "nullable": true,
            "example": 500
          },
          "ShowRecordCount": {
            "type": "boolean",
            "description": "Whether the favorite displays a total record count.",
            "nullable": true,
            "example": true
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the favorite type. No named mapping is defined; null when unspecified.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "ViewType": {
            "type": "integer",
            "description": "Integer code for how the favorite is displayed: 0 = List, 1 = Chart, 2 = Pivot, 3 = Spreadsheet, 4 = Board, 5 = Calendar, 6 = Text, 7 = Map, 8 = Image, 9 = Card, 11 = Summary, 12 = iFrame, 14 = Singleton, 15 = Shipping, 20 = Search, 22 = Action form, 23 = AI chat, 24 = File preview, 25 = Markdown. Favorites typically use List, Chart or Text.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BoardGroupFieldId": {
            "type": "string",
            "description": "Identifier of the field used to group records when the favorite is shown as a board.",
            "format": "uuid",
            "nullable": true,
            "example": "5d8c2a13-7e64-4b29-9f01-3a6c8e2d4b70"
          },
          "ChartSettings": {
            "$ref": "#/components/schemas/ChartSettingsModel"
          },
          "TextSettings": {
            "$ref": "#/components/schemas/TextSettingsModel"
          },
          "Columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteColumnResponse"
            },
            "description": "The columns displayed by the favorite.",
            "nullable": true
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteRestrictionResponse"
            },
            "description": "The filter restrictions applied by the favorite.",
            "nullable": true
          },
          "Variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteVariableResponse"
            },
            "description": "The variable values supplied by the favorite.",
            "nullable": true
          },
          "Sharing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteSharingResponse"
            },
            "description": "The users and teams the favorite is shared with.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteTagResponse"
            },
            "description": "The tags assigned to the favorite.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, such as the favorite's data endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteRestrictionResponse": {
        "type": "object",
        "properties": {
          "FavoriteRestrictionId": {
            "type": "string",
            "description": "The restriction's unique identifier.",
            "format": "uuid",
            "example": "7c1a9d3e-2b46-4f81-90a5-6e3d8c1b4a72"
          },
          "RestrictionNumber": {
            "type": "integer",
            "description": "Ordinal position of the restriction within the favorite's filter.",
            "format": "int32",
            "example": 1
          },
          "SubqueryId": {
            "type": "string",
            "description": "Identifier of the subquery the restriction targets, when filtering on a related list.",
            "format": "uuid",
            "nullable": true,
            "example": "2f9b7c1d-4e83-4a26-9c50-1d6a8e3b2f47"
          },
          "FieldId": {
            "type": "string",
            "description": "Identifier of the field the restriction is applied to.",
            "format": "uuid",
            "nullable": true,
            "example": "4a6c8e2d-5b70-4f19-83a1-9d2c4b6e8a13"
          },
          "Operator": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Conjunctive": {
            "type": "integer",
            "description": "Integer code for how this restriction joins the previous one: 0 = None, 1 = And, 2 = Or.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteRestrictionValueResponse"
            },
            "description": "The values compared against by the restriction.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "FavoriteRestrictionValueId": {
            "type": "string",
            "description": "The restriction value's unique identifier.",
            "format": "uuid",
            "example": "8e2d4b6a-1c79-4f53-90b8-3a5c7e1d9b46"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of the value within its restriction (for example, the two ends of a Between).",
            "format": "int32",
            "example": 1
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against. Populated only when the value type is Constant.",
            "nullable": true,
            "example": "Active"
          },
          "DateValueType": {
            "type": "integer",
            "description": "Integer code for a relative date token when the value type is Date (for example, 0 = Today, 1 = Yesterday, 5 = Start of month, 36 = This month, 42 = This year).",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "FieldValue": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteSharingResponse": {
        "type": "object",
        "properties": {
          "FavoriteSharingId": {
            "type": "string",
            "description": "The sharing entry's unique identifier.",
            "format": "uuid",
            "example": "1d6a8e3b-2f47-4c90-85e2-7b4d9c1a3e68"
          },
          "User": {
            "$ref": "#/components/schemas/SimpleUserResponse"
          },
          "Team": {
            "$ref": "#/components/schemas/SimpleTeamResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteTagResponse": {
        "type": "object",
        "properties": {
          "FavoriteTagId": {
            "type": "string",
            "description": "Unique identifier of the tag assigned to the favorite.",
            "format": "uuid",
            "example": "3a5c7e1d-9b46-4f80-82a1-6e2d4b8c0f95"
          },
          "Tag": {
            "type": "string",
            "description": "The tag's display name.",
            "nullable": true,
            "example": "Monthly"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteUsageItem": {
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "format": "uuid"
          },
          "EntityId": {
            "type": "string",
            "format": "uuid"
          },
          "FavoriteName": {
            "type": "string",
            "nullable": true
          },
          "UserTabId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "LastCompanyId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "Image": {
            "type": "string",
            "nullable": true
          },
          "ConnectorSetupId": {
            "type": "string",
            "format": "uuid"
          },
          "ConnectorName": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FavoriteVariableResponse": {
        "type": "object",
        "properties": {
          "FavoriteVariableId": {
            "type": "string",
            "description": "The favorite variable's unique identifier.",
            "format": "uuid",
            "example": "6e2d4b8c-0f95-4a31-87d2-5b9c1a3e7d68"
          },
          "Variable": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the variable value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value supplied for the variable. Populated only when the value type is Constant.",
            "nullable": true,
            "example": "1000"
          },
          "DateValue": {
            "type": "integer",
            "description": "Integer code for a relative date token when the value type is Date (for example, 0 = Today, 1 = Yesterday, 5 = Start of month, 36 = This month, 42 = This year).",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "FieldDateFormat": {
        "enum": [
          "Date",
          "Day",
          "DayOfWeek",
          "Month",
          "Year",
          "MonthYear",
          "FiscalPeriod",
          "FiscalYear",
          "FiscalPeriodYear"
        ],
        "type": "string",
        "description": "Display granularity for date fields.\n\n- `Date` — Full date\n- `Day` — Day of month\n- `DayOfWeek` — Day of week\n- `Month` — Month\n- `Year` — Year\n- `MonthYear` — Month and year\n- `FiscalPeriod` — Fiscal period\n- `FiscalYear` — Fiscal year\n- `FiscalPeriodYear` — Fiscal period and year\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Date": "Full date",
          "Day": "Day of month",
          "DayOfWeek": "Day of week",
          "Month": "Month",
          "Year": "Year",
          "MonthYear": "Month and year",
          "FiscalPeriod": "Fiscal period",
          "FiscalYear": "Fiscal year",
          "FiscalPeriodYear": "Fiscal period and year"
        }
      },
      "FieldListItemResponseModel": {
        "type": "object",
        "properties": {
          "EntityFieldListItemId": {
            "type": "string",
            "description": "The list item's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Item": {
            "type": "string",
            "description": "The display text shown for the list item.",
            "nullable": true,
            "example": "Active"
          },
          "Value": {
            "type": "string",
            "description": "The underlying value stored for the list item.",
            "nullable": true,
            "example": "1"
          },
          "Index": {
            "type": "integer",
            "description": "The list item's position in the ordered list.",
            "format": "int64",
            "nullable": true,
            "example": 0
          }
        },
        "additionalProperties": false
      },
      "FieldSummaryMethod": {
        "enum": [
          "None",
          "Sum",
          "Maximum",
          "Minimum",
          "Average",
          "Count",
          "GroupBy",
          "Rank",
          "RankNoTies",
          "Median",
          "Mode",
          "StandardDeviation",
          "Variance",
          "DistinctCount",
          "DistinctValue",
          "First",
          "Last",
          "Concatenate"
        ],
        "type": "string",
        "description": "Aggregation applied to the field in summaries.\n\n- `None` — No aggregation\n- `Sum` — Sum of the values\n- `Maximum` — Largest value\n- `Minimum` — Smallest value\n- `Average` — Mean of the values\n- `Count` — Number of rows\n- `GroupBy` — Group rows by this field\n- `Rank` — Rank, sharing ties\n- `RankNoTies` — Rank, breaking ties\n- `Median` — Middle value\n- `Mode` — Most frequent value\n- `StandardDeviation` — Standard deviation\n- `Variance` — Variance\n- `DistinctCount` — Count of distinct values\n- `DistinctValue` — A single distinct value\n- `First` — First value\n- `Last` — Last value\n- `Concatenate` — Concatenate the values\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "None": "No aggregation",
          "Sum": "Sum of the values",
          "Maximum": "Largest value",
          "Minimum": "Smallest value",
          "Average": "Mean of the values",
          "Count": "Number of rows",
          "GroupBy": "Group rows by this field",
          "Rank": "Rank, sharing ties",
          "RankNoTies": "Rank, breaking ties",
          "Median": "Middle value",
          "Mode": "Most frequent value",
          "StandardDeviation": "Standard deviation",
          "Variance": "Variance",
          "DistinctCount": "Count of distinct values",
          "DistinctValue": "A single distinct value",
          "First": "First value",
          "Last": "Last value",
          "Concatenate": "Concatenate the values"
        }
      },
      "FieldTextFormat": {
        "enum": [
          "Csv",
          "Json",
          "Xml",
          "Markdown"
        ],
        "type": "string",
        "description": "Text format applied to text fields.\n\n- `Csv` — Comma-separated values\n- `Json` — JSON\n- `Xml` — XML\n- `Markdown` — Markdown\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Csv": "Comma-separated values",
          "Json": "JSON",
          "Xml": "XML",
          "Markdown": "Markdown"
        }
      },
      "FieldTimeSpanUnit": {
        "enum": [
          "Second",
          "Minute",
          "Hour",
          "Day",
          "MinuteSecond",
          "HourMinute",
          "HourMinuteSecond"
        ],
        "type": "string",
        "description": "Unit used for time-span (duration) fields.\n\n- `Second` — Seconds\n- `Minute` — Minutes\n- `Hour` — Hours\n- `Day` — Days\n- `MinuteSecond` — Minutes and seconds\n- `HourMinute` — Hours and minutes\n- `HourMinuteSecond` — Hours, minutes and seconds\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Second": "Seconds",
          "Minute": "Minutes",
          "Hour": "Hours",
          "Day": "Days",
          "MinuteSecond": "Minutes and seconds",
          "HourMinute": "Hours and minutes",
          "HourMinuteSecond": "Hours, minutes and seconds"
        }
      },
      "FieldType": {
        "enum": [
          "String",
          "Date",
          "Currency",
          "Integer",
          "Phone",
          "Enum",
          "Percentage",
          "YesNo",
          "Time",
          "Quantity",
          "Email",
          "Url",
          "Image",
          "Color",
          "Text",
          "Guid",
          "Icon",
          "TimeSpan",
          "File",
          "Dimension"
        ],
        "type": "string",
        "description": "The data type of the field\n\n- `String` — String\n- `Date` — Date\n- `Currency` — Currency\n- `Integer` — Number\n- `Phone` — Phone\n- `Enum` — List\n- `Percentage` — Percentage\n- `YesNo` — Yes/No\n- `Time` — Time\n- `Quantity` — Quantity\n- `Email` — Email\n- `Url` — Website\n- `Image` — Image\n- `Color` — Color\n- `Text` — Text\n- `Guid` — GUID\n- `Icon` — Icon\n- `TimeSpan` — Duration / time span\n- `File` — File\n- `Dimension` — Dimension\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "String": "String",
          "Date": "Date",
          "Currency": "Currency",
          "Integer": "Number",
          "Phone": "Phone",
          "Enum": "List",
          "Percentage": "Percentage",
          "YesNo": "Yes/No",
          "Time": "Time",
          "Quantity": "Quantity",
          "Email": "Email",
          "Url": "Website",
          "Image": "Image",
          "Color": "Color",
          "Text": "Text",
          "Guid": "GUID",
          "Icon": "Icon",
          "TimeSpan": "Duration / time span",
          "File": "File",
          "Dimension": "Dimension"
        }
      },
      "FieldTypeResponse": {
        "type": "object",
        "properties": {
          "Type": {
            "type": "integer",
            "description": "Integer code for the field type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = Drop-down list, 7 = Percentage, 8 = Yes/no, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 14 = Skype, 15 = Twitter, 16 = Color, 17 = Address, 18 = Text, 19 = Guid, 20 = Icon, 21 = TimeSpan, 24 = File, 25 = Dimension, 26 = DateTime.",
            "format": "int32",
            "example": 4
          },
          "Name": {
            "type": "string",
            "description": "The display name of the field type.",
            "nullable": true,
            "example": "Currency"
          },
          "BaseType": {
            "type": "string",
            "description": "The underlying primitive category the field type maps to, such as string, text, date, number, time, timespan, bool, enum or file. Determines which restriction operators apply.",
            "nullable": true,
            "example": "number"
          },
          "FilterDisabled": {
            "type": "boolean",
            "description": "Whether filtering is disabled for this field type.",
            "nullable": true,
            "example": false
          },
          "HasDecimals": {
            "type": "boolean",
            "description": "Whether values of this field type can include decimal places.",
            "nullable": true,
            "example": true
          },
          "DisplayMask": {
            "type": "string",
            "description": "The default display/format mask applied to values of this field type.",
            "nullable": true,
            "example": "#,##0.00"
          },
          "RestrictionTypes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The comparison/filter operator codes permitted for this field type. Values come from the restriction operator set: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "FiscalPeriodResponse": {
        "type": "object",
        "properties": {
          "FiscalPeriodId": {
            "type": "string",
            "description": "The fiscal period's unique identifier.",
            "format": "uuid",
            "example": "9b1c3e2a-7d4f-4c8b-a2e1-5f6d7c8b9a01"
          },
          "Name": {
            "type": "string",
            "description": "The fiscal period's name.",
            "nullable": true,
            "example": "Q1"
          },
          "StartDate": {
            "type": "string",
            "description": "The date the fiscal period starts.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-01"
          },
          "EndDate": {
            "type": "string",
            "description": "The date the fiscal period ends.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-31"
          }
        },
        "additionalProperties": false
      },
      "FiscalYearResponse": {
        "type": "object",
        "properties": {
          "FiscalYearId": {
            "type": "string",
            "description": "The fiscal year's unique identifier.",
            "format": "uuid",
            "example": "4e7a2b16-9c3d-4f81-8b2a-1d6e3f0a7c52"
          },
          "Name": {
            "type": "string",
            "description": "The fiscal year's name.",
            "nullable": true,
            "example": "FY2024"
          },
          "StartDate": {
            "type": "string",
            "description": "The date the fiscal year starts.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-01"
          },
          "EndDate": {
            "type": "string",
            "description": "The date the fiscal year ends.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-31"
          }
        },
        "additionalProperties": false
      },
      "HomeLayoutItemResponse": {
        "type": "object",
        "properties": {
          "HomeLayoutItemId": {
            "type": "string",
            "description": "The home layout item's unique identifier.",
            "format": "uuid",
            "example": "2a9f4d61-3b7c-48e2-9a05-6c1d8e2f3b40"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the home widget type the tile renders: 1 = Start, 2 = Recent favorites, 3 = Frequent favorites, 4 = Shortcuts, 5 = Downloads, 6 = Links, 7 = News, 8 = Videos, 9 = Add tab, 10 = Favorite, 11 = Summary, 12 = Tagged favorites.",
            "format": "int32",
            "example": 10
          },
          "Title": {
            "type": "string",
            "description": "The tile's display title.",
            "nullable": true,
            "example": "Recent Favorites"
          },
          "FavoriteId": {
            "type": "string",
            "description": "Identifier of the favorite shown by the tile, when the tile is bound to a favorite.",
            "format": "uuid",
            "nullable": true,
            "example": "7c4e1a3d-5f82-4b6c-9d10-2e3f4a5b6c7d"
          },
          "Url": {
            "type": "string",
            "description": "The link URL opened by the tile, when the tile is a link.",
            "nullable": true,
            "example": "https://example.com/reports"
          },
          "TagId": {
            "type": "string",
            "description": "Identifier of the tag whose favorites the tile displays, when the tile is bound to a tag.",
            "format": "uuid",
            "nullable": true,
            "example": "b3d6f9c2-1e84-4a57-8c0b-7d2e5f9a3c61"
          },
          "AddType": {
            "type": "integer",
            "description": "Integer code describing how items are added to the tile.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "CompanyId": {
            "type": "string",
            "description": "Identifier of the company the tile is scoped to, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "e1c8a4f7-2d39-4b06-9f51-3a6c2d8e4b70"
          },
          "BackgroundColor": {
            "type": "integer",
            "description": "Integer code for the tile's background color.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "TextColor": {
            "type": "integer",
            "description": "Integer code for the tile's text color.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "BorderColor": {
            "type": "integer",
            "description": "Integer code for the tile's border color.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "BackgroundColorId": {
            "type": "string",
            "description": "Identifier of the defined color used for the tile's background, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "5d2a7c14-6b39-4e80-9a2f-1c3d5e7f9b20"
          },
          "TextColorId": {
            "type": "string",
            "description": "Identifier of the defined color used for the tile's text, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "8f1b3d6a-2c47-4905-8e1b-6a3c2d5f7e90"
          },
          "BorderColorId": {
            "type": "string",
            "description": "Identifier of the defined color used for the tile's border, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "3c9e1a72-4d56-48b0-9c2a-7e1f3b5d6a80"
          },
          "TileLeft": {
            "type": "integer",
            "description": "The tile's horizontal position (left offset) in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "TileTop": {
            "type": "integer",
            "description": "The tile's vertical position (top offset) in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "TileWidth": {
            "type": "integer",
            "description": "The tile's width in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "TileHeight": {
            "type": "integer",
            "description": "The tile's height in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 2
          }
        },
        "additionalProperties": false
      },
      "HomePageItemResponse": {
        "type": "object",
        "properties": {
          "ItemId": {
            "type": "string",
            "description": "The home page item's (tile's) unique identifier.",
            "format": "uuid",
            "example": "6d2f9a14-8c37-4b50-9e2a-1f3c5d7e8b90"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the home widget type the tile renders: 1 = Start, 2 = Recent favorites, 3 = Frequent favorites, 4 = Shortcuts, 5 = Downloads, 6 = Links, 7 = News, 8 = Videos, 9 = Add tab, 10 = Favorite, 11 = Summary, 12 = Tagged favorites.",
            "format": "int32",
            "example": 2
          },
          "Title": {
            "type": "string",
            "description": "The tile's display title.",
            "nullable": true,
            "example": "Frequent Favorites"
          },
          "BackgroundColor": {
            "type": "integer",
            "description": "Integer code for the tile's background color.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "TextColor": {
            "type": "integer",
            "description": "Integer code for the tile's text color.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "BorderColor": {
            "type": "integer",
            "description": "Integer code for the tile's border color.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "BackgroundColorId": {
            "type": "string",
            "description": "Identifier of the defined color used for the tile's background, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "5d2a7c14-6b39-4e80-9a2f-1c3d5e7f9b20"
          },
          "TextColorId": {
            "type": "string",
            "description": "Identifier of the defined color used for the tile's text, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "8f1b3d6a-2c47-4905-8e1b-6a3c2d5f7e90"
          },
          "BorderColorId": {
            "type": "string",
            "description": "Identifier of the defined color used for the tile's border, when set.",
            "format": "uuid",
            "nullable": true,
            "example": "3c9e1a72-4d56-48b0-9c2a-7e1f3b5d6a80"
          },
          "TileLeft": {
            "type": "integer",
            "description": "The tile's horizontal position (left offset) in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "TileTop": {
            "type": "integer",
            "description": "The tile's vertical position (top offset) in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "TileWidth": {
            "type": "integer",
            "description": "The tile's width in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "TileHeight": {
            "type": "integer",
            "description": "The tile's height in the layout grid.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Favorite": {
            "$ref": "#/components/schemas/SimpleFavoriteResponse"
          },
          "Company": {
            "$ref": "#/components/schemas/SimpleCompanyResponse"
          },
          "Favorites": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteUsageItem"
            },
            "description": "The favorites displayed by the tile, used by usage-based tiles such as recent or frequent favorites.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HomePageResponse": {
        "type": "object",
        "properties": {
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/HomePageItemResponse"
            },
            "description": "The tiles (items) that make up the user's home page layout.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HttpContent": {
        "type": "object",
        "properties": {
          "Headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValuePairOfStringAndIEnumerableOfString"
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HttpMethod": {
        "type": "object",
        "properties": {
          "Method": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "HttpRequestMessage": {
        "type": "object",
        "properties": {
          "Version": {
            "type": "string",
            "nullable": true
          },
          "VersionPolicy": {
            "$ref": "#/components/schemas/HttpVersionPolicy"
          },
          "Content": {
            "$ref": "#/components/schemas/HttpContent"
          },
          "Method": {
            "$ref": "#/components/schemas/HttpMethod"
          },
          "RequestUri": {
            "type": "string",
            "format": "uri",
            "nullable": true
          },
          "Headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValuePairOfStringAndIEnumerableOfString"
            },
            "nullable": true,
            "readOnly": true
          },
          "Properties": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true,
            "readOnly": true,
            "deprecated": true
          },
          "Options": {
            "type": "object",
            "additionalProperties": { },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HttpResponseMessage": {
        "type": "object",
        "properties": {
          "Version": {
            "type": "string",
            "nullable": true
          },
          "Content": {
            "$ref": "#/components/schemas/HttpContent"
          },
          "StatusCode": {
            "$ref": "#/components/schemas/HttpStatusCode"
          },
          "ReasonPhrase": {
            "type": "string",
            "nullable": true
          },
          "Headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValuePairOfStringAndIEnumerableOfString"
            },
            "nullable": true,
            "readOnly": true
          },
          "TrailingHeaders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValuePairOfStringAndIEnumerableOfString"
            },
            "nullable": true,
            "readOnly": true
          },
          "RequestMessage": {
            "$ref": "#/components/schemas/HttpRequestMessage"
          },
          "IsSuccessStatusCode": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HttpStatusCode": {
        "enum": [
          "Continue",
          "SwitchingProtocols",
          "Processing",
          "EarlyHints",
          "OK",
          "Created",
          "Accepted",
          "NonAuthoritativeInformation",
          "NoContent",
          "ResetContent",
          "PartialContent",
          "MultiStatus",
          "AlreadyReported",
          "IMUsed",
          "MultipleChoices",
          "MovedPermanently",
          "Found",
          "SeeOther",
          "NotModified",
          "UseProxy",
          "Unused",
          "TemporaryRedirect",
          "PermanentRedirect",
          "BadRequest",
          "Unauthorized",
          "PaymentRequired",
          "Forbidden",
          "NotFound",
          "MethodNotAllowed",
          "NotAcceptable",
          "ProxyAuthenticationRequired",
          "RequestTimeout",
          "Conflict",
          "Gone",
          "LengthRequired",
          "PreconditionFailed",
          "RequestEntityTooLarge",
          "RequestUriTooLong",
          "UnsupportedMediaType",
          "RequestedRangeNotSatisfiable",
          "ExpectationFailed",
          "MisdirectedRequest",
          "UnprocessableEntity",
          "Locked",
          "FailedDependency",
          "UpgradeRequired",
          "PreconditionRequired",
          "TooManyRequests",
          "RequestHeaderFieldsTooLarge",
          "UnavailableForLegalReasons",
          "InternalServerError",
          "NotImplemented",
          "BadGateway",
          "ServiceUnavailable",
          "GatewayTimeout",
          "HttpVersionNotSupported",
          "VariantAlsoNegotiates",
          "InsufficientStorage",
          "LoopDetected",
          "NotExtended",
          "NetworkAuthenticationRequired"
        ],
        "type": "string"
      },
      "HttpVersionPolicy": {
        "enum": [
          "RequestVersionOrLower",
          "RequestVersionOrHigher",
          "RequestVersionExact"
        ],
        "type": "string"
      },
      "JoinEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "JsonNode": {
        "type": "object",
        "properties": {
          "Options": {
            "$ref": "#/components/schemas/JsonNodeOptions"
          },
          "Parent": {
            "$ref": "#/components/schemas/JsonNode"
          },
          "Root": {
            "$ref": "#/components/schemas/JsonNode"
          }
        },
        "additionalProperties": false
      },
      "JsonNodeOptions": {
        "type": "object",
        "properties": {
          "PropertyNameCaseInsensitive": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "KeyValuePairOfStringAndIEnumerableOfString": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "nullable": true
          },
          "Value": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "KeyValuePairOfStringAndString": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListItemRestriction": {
        "type": "object",
        "properties": {
          "RestrictionId": {
            "type": "string",
            "description": "The unique identifier of the list-item restriction.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "RestrictionNumber": {
            "type": "integer",
            "description": "The ordinal position of this restriction within the list-item field's set of restrictions.",
            "format": "int32",
            "example": 1
          },
          "RestrictionField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItemRestrictionValueResponse"
            },
            "description": "The comparison values applied by this restriction.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ListItemRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "RestrictionValueId": {
            "type": "string",
            "description": "The unique identifier of this list-item restriction value.",
            "format": "uuid",
            "example": "9c5b94b1-35ad-49bb-b118-8e8fc24abf80"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The ordinal position of this value within the restriction's set of values.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the value type: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter, 100 = Default.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value. Populated only when Type is 0 (Constant).",
            "nullable": true,
            "example": "Active"
          },
          "DateValue": {
            "type": "integer",
            "description": "The integer date value. Populated only when Type is 3 (Date).",
            "format": "int32",
            "nullable": true,
            "example": 20240312
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Variable": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          }
        },
        "additionalProperties": false
      },
      "ListResponseOfActionDefaultValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActionDefaultValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfActionFieldListItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActionFieldListItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfActionFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActionFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfActionParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActionParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfActionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ActionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiModelResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiModelResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentCompanyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentCompanyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentRestrictionApplyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionApplyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentSortResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentSortResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiPromptEntityAttachmentVariableResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiPromptEntityAttachmentVariableResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfAiToneModifierResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AiToneModifierResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfBrowserExtensionConfigListItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConfigListItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfBrowserExtensionConversationResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConversationResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfBrowserExtensionPageResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionPageResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfColorPaletteColorResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ColorPaletteColorResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfColorPaletteResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ColorPaletteResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfColorResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ColorResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfCompanyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompanyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfConnectorAiDataSourceFilterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorAiDataSourceFilterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfConnectorAiDataSourceResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorAiDataSourceResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfConnectorAiToolResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorAiToolResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfConnectorResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfCustomEntityCompareFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityCompareFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfCustomEntityJoinFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityJoinFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfCustomEntityJoinLinkResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityJoinLinkResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfDateValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DateValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEndpointCustomHeaderResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointCustomHeaderResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEndpointFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEndpointParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEndpointSortResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EndpointSortResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityColorCodingResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityColorCodingResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityColorCodingRule": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityColorCodingRule"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityColorCodingRuleValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityColorCodingRuleValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiAttachmentResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiAttachmentResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiDataSourceResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiDataSourceResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteApplyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteApplyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteAttachmentResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteAttachmentResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteDataSourceResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteDataSourceResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteParameterListItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterListItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiFavoriteToolResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiFavoriteToolResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailAiToolResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailAiToolResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailFilterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailFilterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityDetailVariableResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityDetailVariableResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityFieldListItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityFieldListItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityGroupResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityGroupResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityMatrixColumnSummaryResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixColumnSummaryResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityMatrixFilterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixFilterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityMatrixFilterValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixFilterValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityMatrixRowSummaryResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMatrixRowSummaryResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityMergeCompanyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMergeCompanyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityMergeFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityMergeFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityResponseModel": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityResponseModel"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityTableFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityTableJoinResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableJoinResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityTableRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityTableRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityVariableListItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityVariableListItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfEntityVariableResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityVariableResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfExternalUserResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExternalUserResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteColumnResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteColumnResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteSharingResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteSharingResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteTagResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteTagResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFavoriteVariableResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FavoriteVariableResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFieldTypeResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FieldTypeResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFiscalPeriodResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FiscalPeriodResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfFiscalYearResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FiscalYearResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfKeyValuePairOfStringAndString": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/KeyValuePairOfStringAndString"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfListItemRestriction": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ListItemRestriction"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfLookupResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfLookupRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfLookupRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfLookupVariableResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupVariableResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpClientCapabilityResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpClientCapabilityResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpClientParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpClientParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpClientResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpClientResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpPromptMessageResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptMessageResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpPromptMessageRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptMessageRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpPromptMessageRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptMessageRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpPromptParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpPromptParameterValidationResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptParameterValidationResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpPromptResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpServerResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpServerResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolActionFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolActionFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolClientInstructionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolClientInstructionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolCompanyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolCompanyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolHistoryResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolHistoryResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolParameterClientInstructionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterClientInstructionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolParameterListItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterListItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolParameterSortFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterSortFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolParameterValidationResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterValidationResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolResponseFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolResponseFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolResponseSortResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolResponseSortResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolRestrictionApplyResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolRestrictionApplyResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfMcpToolVariableResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolVariableResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfRedactionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RedactionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfRestrictionTypeResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RestrictionTypeResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfScheduledJobResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ScheduledJobResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSecurityRoleResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityRoleResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSharedAccount": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SharedAccount"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSharedInstructionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SharedInstructionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSharedUser": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SharedUser"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptGroupResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptGroupResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptMcpToolResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptMcpToolResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptMessageResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptMessageResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptMessageRestrictionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptMessageRestrictionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptMessageRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptMessageRestrictionValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptPageFilterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptPageFilterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptPageParameterMappingResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptPageParameterMappingResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptPageRefreshAttachmentResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptPageRefreshAttachmentResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptPageResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptPageResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptParameterValueMappingResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptParameterValueMappingResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptParameterValueResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptParameterValueResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSidekickPromptResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSimpleEndpointResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleEndpointResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSimpleFavoriteResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleFavoriteResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfSimpleTeamResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleTeamResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfString": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfTagByLinkTypeResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagByLinkTypeResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfTagForEntityResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagForEntityResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfTagResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfTeamMemberResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamMemberResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfTeamResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TeamResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetActionResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetActionResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetAiAttachmentFieldResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetAiAttachmentFieldResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetAiAttachmentParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetAiAttachmentParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetAiAttachmentSortResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetAiAttachmentSortResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetAiFavoriteAttachmentResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetAiFavoriteAttachmentResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetAiFavoriteParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetAiFavoriteParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetDetailResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetDetailResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetFormResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetFormResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetGroupItemResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetGroupItemResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetParameterResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetParameterResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "ListResponseOfWidgetResponse": {
        "type": "object",
        "properties": {
          "Data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetResponse"
            },
            "description": "The page of records returned for the current request.",
            "nullable": true
          },
          "TotalCount": {
            "type": "integer",
            "description": "The total number of records available across all pages, before paging is applied.",
            "format": "int32",
            "example": 250
          },
          "Limit": {
            "type": "integer",
            "description": "The maximum number of records returned per page.",
            "format": "int32",
            "example": 100
          },
          "Offset": {
            "type": "integer",
            "description": "The number of records skipped from the start of the result set for this page.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false,
        "description": "Paginated list response envelope."
      },
      "LookupResponse": {
        "type": "object",
        "properties": {
          "LookupId": {
            "type": "string",
            "description": "The lookup's unique identifier.",
            "format": "uuid",
            "example": "5f9c8b2a-1d3e-4f6a-8b7c-9e0d1a2b3c4d"
          },
          "Name": {
            "type": "string",
            "description": "The lookup's display name.",
            "nullable": true,
            "example": "Customer Name Lookup"
          },
          "Description": {
            "type": "string",
            "description": "The lookup's description.",
            "nullable": true,
            "example": "Resolves a customer number to its display name."
          },
          "Entity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "InputField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "OutputField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Company": {
            "$ref": "#/components/schemas/SimpleCompanyResponse"
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupRestrictionResponse"
            },
            "description": "The restrictions that filter which source records the lookup considers.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LookupRestrictionResponse": {
        "type": "object",
        "properties": {
          "LookupRestrictionId": {
            "type": "string",
            "description": "The unique identifier of the lookup restriction.",
            "format": "uuid",
            "example": "7a1e4d8c-2b6f-4a3d-9c5e-0f1b2a3c4d5e"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LookupRestrictionValueResponse"
            },
            "description": "The comparison values applied by this restriction.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LookupRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "LookupRestrictionValueId": {
            "type": "string",
            "description": "The unique identifier of the lookup restriction value.",
            "format": "uuid",
            "example": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for the value type: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter, 100 = Default.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value. Populated only when ValueType is 0 (Constant).",
            "nullable": true,
            "example": "USA"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "DateTimeValue": {
            "type": "integer",
            "description": "The integer date value. Populated only when ValueType is 3 (Date).",
            "format": "int32",
            "nullable": true,
            "example": 20240312
          }
        },
        "additionalProperties": false
      },
      "LookupVariableResponse": {
        "type": "object",
        "properties": {
          "LookupVariableId": {
            "type": "string",
            "description": "The lookup variable's unique identifier.",
            "format": "uuid",
            "example": "5e3a7b1c-2d4f-4a6b-8c9d-0e1f2a3b4c5d"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value, populated when ValueType is Constant.",
            "nullable": true,
            "example": "1000"
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative date offset, populated when ValueType is Date.",
            "format": "int32",
            "nullable": true,
            "example": -30
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "MatrixColumnType": {
        "enum": [
          "Filter",
          "Summary",
          "Calculation",
          "Label"
        ],
        "type": "string",
        "description": "What a matrix column represents.\n\n- `Filter` — Filter\n- `Summary` — Summary\n- `Calculation` — Calculation\n- `Label` — Label\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Filter": "Filter",
          "Summary": "Summary",
          "Calculation": "Calculation",
          "Label": "Label"
        }
      },
      "MatrixEntityColumnResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixColumnId": {
            "type": "string",
            "description": "The matrix column's unique identifier.",
            "format": "uuid",
            "example": "1f8e3a2b-6c4d-4e90-a7b3-2d5f9c0e1a4b"
          },
          "Name": {
            "type": "string",
            "description": "The matrix column's display name.",
            "nullable": true,
            "example": "Total Sales"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the matrix column type: 1 = Filter, 2 = Summary, 3 = Calculation, 4 = Label.",
            "format": "int32",
            "example": 2
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the column: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank (sharing ties), 8 = Rank (breaking ties), 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "example": 1
          },
          "BaseField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Script": {
            "type": "string",
            "description": "Expression used to compute the column's value. Populated only for calculation columns.",
            "nullable": true,
            "example": "[Quantity] * [UnitPrice]"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field that this column maps to.",
            "format": "uuid",
            "example": "6a1b2c3d-4e5f-4081-9a2b-3c4d5e6f7081"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the column's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 16 = Color, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension. Populated for calculation and summary columns.",
            "format": "int32",
            "nullable": true,
            "example": 3
          }
        },
        "additionalProperties": false
      },
      "MatrixEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          },
          "BaseEntity": {
            "$ref": "#/components/schemas/EntityResponseModel"
          },
          "Columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MatrixEntityColumnResponse"
            },
            "description": "The columns that make up the matrix.",
            "nullable": true
          },
          "Rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MatrixEntityRowResponse"
            },
            "description": "The rows that make up the matrix.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MatrixEntityRowResponse": {
        "type": "object",
        "properties": {
          "CustomEntityMatrixRowId": {
            "type": "string",
            "description": "The matrix row's unique identifier.",
            "format": "uuid",
            "example": "4a1f9c2e-7b53-4d8a-9e10-6c2f3a4b5d6e"
          },
          "Name": {
            "type": "string",
            "description": "The matrix row's display name.",
            "nullable": true,
            "example": "Region"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the row represents: 1 = Filter, 2 = Dynamic (one row per distinct value), 3 = Summary, 4 = Calculation.",
            "format": "int32",
            "example": 2
          },
          "BaseField": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Script": {
            "type": "string",
            "description": "Expression used when the row is a Calculation.",
            "nullable": true,
            "example": "[Amount] * 2"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the field's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 16 = Color, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the row: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank (sharing ties), 8 = Rank (breaking ties), 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of rows to generate for a Dynamic row.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "Granularity": {
            "type": "integer",
            "description": "Integer code for the date grouping granularity when the row is based on a date field: 1 = Full date, 2 = Day of month, 3 = Day of week, 4 = Month, 5 = Year, 6 = Month and year, 7 = Fiscal period, 8 = Fiscal year, 9 = Fiscal period and year.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "SortType": {
            "type": "integer",
            "description": "Integer code for how the row's values are sorted: 0 = No sorting, 1 = By a field, 2 = By a column.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "SortColumn": {
            "type": "string",
            "description": "Identifier of the column the row is sorted by when SortType is By a column.",
            "format": "uuid",
            "nullable": true,
            "example": "2f3e4d5c-6b7a-4089-9c0d-1e2f3a4b5c6d"
          },
          "SortDescending": {
            "type": "boolean",
            "description": "Whether the row is sorted in descending order.",
            "nullable": true,
            "example": false
          },
          "HideEmptyRows": {
            "type": "boolean",
            "description": "Whether rows with no values are hidden.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false
      },
      "MatrixRowSortType": {
        "enum": [
          "None",
          "Field",
          "Column"
        ],
        "type": "string",
        "description": "How a matrix row's values are sorted.\n\n- `None` — No sorting\n- `Field` — By a field\n- `Column` — By a column\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "None": "No sorting",
          "Field": "By a field",
          "Column": "By a column"
        }
      },
      "MatrixRowType": {
        "enum": [
          "Filter",
          "Dynamic",
          "Summary",
          "Calculation"
        ],
        "type": "string",
        "description": "What a matrix row represents.\n\n- `Filter` — Filter\n- `Dynamic` — Dynamic (one row per distinct value)\n- `Summary` — Summary\n- `Calculation` — Calculation\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Filter": "Filter",
          "Dynamic": "Dynamic (one row per distinct value)",
          "Summary": "Summary",
          "Calculation": "Calculation"
        }
      },
      "McpClientCapability": {
        "enum": [
          "Excel",
          "Csv"
        ],
        "type": "string",
        "description": "An output capability an MCP client supports.\n\n- `Excel` — Excel\n- `Csv` — CSV\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Excel": "Excel",
          "Csv": "CSV"
        }
      },
      "McpClientCapabilityResponse": {
        "type": "object",
        "properties": {
          "McpClientCapabilityId": {
            "type": "string",
            "description": "The MCP client capability's unique identifier.",
            "format": "uuid",
            "example": "7d9e1f2a-3b4c-4d5e-8f60-1a2b3c4d5e6f"
          },
          "Capability": {
            "type": "integer",
            "description": "Integer code for the output capability the client supports: 1 = Excel, 2 = CSV.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Optional integer subtype qualifying the capability.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this capability.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpClientParameterResponse": {
        "type": "object",
        "properties": {
          "McpClientParameterId": {
            "type": "string",
            "description": "The MCP client parameter's unique identifier.",
            "format": "uuid",
            "example": "2c8b4a1d-5e6f-4071-9a2b-3c4d5e6f7a8b"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for where the parameter is sent: 1 = URL query string, 2 = HTTP header.",
            "format": "int32",
            "example": 2
          },
          "Key": {
            "type": "string",
            "description": "The name of the query-string key or header.",
            "nullable": true,
            "example": "X-Api-Key"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code identifying how the parameter's value is supplied.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The fixed value used when the parameter's value is a constant.",
            "nullable": true,
            "example": "application/json"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied.",
            "example": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpClientResponse": {
        "type": "object",
        "properties": {
          "McpClientId": {
            "type": "string",
            "description": "The MCP client's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The MCP client's display name.",
            "nullable": true,
            "example": "Internal Integration"
          },
          "Description": {
            "type": "string",
            "description": "A description of the MCP client.",
            "nullable": true,
            "example": "Custom client used by our internal automation."
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the MCP client was created.",
            "format": "date-time",
            "example": "2024-03-12"
          },
          "CreatedUserId": {
            "type": "string",
            "description": "Identifier of the user who created the MCP client.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date the MCP client was last modified, if it has been changed.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-05-20"
          },
          "ModifiedUserId": {
            "type": "string",
            "description": "Identifier of the user who last modified the MCP client, if it has been changed.",
            "format": "uuid",
            "nullable": true,
            "example": "2f1d8a3b-6c4e-4f2a-9d7b-1e5c8a0f3b2d"
          },
          "IdentifierType": {
            "type": "integer",
            "description": "Integer code for where a custom client's identifier is read from on an incoming request: 1 = URL parameter, 2 = HTTP header. Set together with the identifier key and value; used when the client type is Custom.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "IdentifierKey": {
            "type": "string",
            "description": "Name of the URL parameter or HTTP header that holds the identifier used to recognise a custom client, as selected by the identifier type.",
            "nullable": true,
            "example": "X-Api-Key"
          },
          "IdentifierValue": {
            "type": "string",
            "description": "Expected value of the identifier key that, when matched on a request, recognises the custom client.",
            "nullable": true,
            "example": "a1b2c3d4e5f6"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this MCP client, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpClientType": {
        "enum": [
          "Claude",
          "ChatGpt",
          "ClaudeMobile",
          "MicrosoftCopilot",
          "IntacctCopilot",
          "Custom"
        ],
        "type": "string",
        "description": "A known MCP client. Use Custom for a client identified by your own header/value.\n\n- `Claude` — Claude\n- `ChatGpt` — ChatGPT\n- `ClaudeMobile` — Claude mobile\n- `MicrosoftCopilot` — Microsoft Copilot\n- `IntacctCopilot` — Intacct Copilot\n- `Custom` — Custom (identified by a header/value you supply)\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Claude": "Claude",
          "ChatGpt": "ChatGPT",
          "ClaudeMobile": "Claude mobile",
          "MicrosoftCopilot": "Microsoft Copilot",
          "IntacctCopilot": "Intacct Copilot",
          "Custom": "Custom (identified by a header/value you supply)"
        }
      },
      "McpPromptMessageResponse": {
        "type": "object",
        "properties": {
          "McpPromptMessageId": {
            "type": "string",
            "description": "The prompt message's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Role": {
            "type": "integer",
            "description": "Integer code for the role the message is attributed to: 1 = User, 2 = Assistant.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the message content type: 1 = Text, 2 = Image.",
            "format": "int32",
            "example": 1
          },
          "Message": {
            "type": "string",
            "description": "The text content of the message. Used when the message type is Text.",
            "nullable": true,
            "example": "Summarise the latest sales figures."
          },
          "Url": {
            "type": "string",
            "description": "The URL of the message content. Used when the message type is Image.",
            "nullable": true,
            "example": "https://example.com/chart.png"
          },
          "MimeType": {
            "type": "string",
            "description": "The MIME type of the message content, such as for an image.",
            "nullable": true,
            "example": "image/png"
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "Identifier of the shared instruction supplying this message's content, if one is linked.",
            "format": "uuid",
            "nullable": true,
            "example": "2f1d8a3b-6c4e-4f2a-9d7b-1e5c8a0f3b2d"
          },
          "SharedInstructionName": {
            "type": "string",
            "description": "Name of the linked shared instruction. Populated only when a shared instruction is included.",
            "nullable": true,
            "example": "Standard greeting"
          },
          "SharedInstructionContent": {
            "type": "string",
            "description": "Content of the linked shared instruction. Populated only when a shared instruction is included.",
            "nullable": true,
            "example": "Always respond in a professional tone."
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptMessageRestrictionResponse"
            },
            "description": "The restrictions that control when this message is included in the prompt.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this prompt message, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpPromptMessageRestrictionResponse": {
        "type": "object",
        "properties": {
          "McpPromptMessageRestrictionId": {
            "type": "string",
            "description": "The prompt message restriction's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Parameter": {
            "$ref": "#/components/schemas/McpPromptParameterResponse"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator the restriction applies. Common values: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 6 = Contains, 14 = One of, 22 = Is null; other operator codes are also supported.",
            "format": "int32",
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptMessageRestrictionValueResponse"
            },
            "description": "The values the parameter is compared against by the restriction.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this prompt message restriction, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpPromptMessageRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "McpPromptMessageRestrictionValueId": {
            "type": "string",
            "description": "The restriction value's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for the kind of value supplied: 0 = Constant, 1 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against. Used when the value type is Constant.",
            "nullable": true,
            "example": "Active"
          },
          "ParameterValue": {
            "$ref": "#/components/schemas/McpPromptParameterResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this restriction value, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpPromptMessageRole": {
        "enum": [
          "User",
          "Assistant"
        ],
        "type": "string",
        "description": "The role a prompt message is attributed to.\n\n- `User` — User\n- `Assistant` — Assistant\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "User": "User",
          "Assistant": "Assistant"
        }
      },
      "McpPromptParameterResponse": {
        "type": "object",
        "properties": {
          "McpPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The prompt parameter's name.",
            "nullable": true,
            "example": "customerName"
          },
          "Description": {
            "type": "string",
            "description": "A description of the prompt parameter.",
            "nullable": true,
            "example": "The name of the customer to look up."
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this parameter must be supplied.",
            "nullable": true,
            "example": true
          },
          "Validations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptParameterValidationResponse"
            },
            "description": "The validation rules applied to this parameter's value.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this prompt parameter, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpPromptParameterValidationResponse": {
        "type": "object",
        "properties": {
          "McpPromptValidationId": {
            "type": "string",
            "description": "The prompt validation's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the validation rule type. Common values: 1 = Regex, 2 = Max value, 3 = Min value, 4 = Max length, 5 = Min length, 10 = Date format, 12 = Valid email; other rule-type codes are also supported.",
            "format": "int32",
            "example": 1
          },
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value must match. Used when the validation type is Regex.",
            "nullable": true,
            "example": "^[A-Za-z0-9]+$"
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message shown when the value fails this validation.",
            "nullable": true,
            "example": "Value must contain only letters and numbers."
          },
          "MaxValue": {
            "type": "integer",
            "description": "The maximum allowed value or length. Used when the validation type is Max value or Max length.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "MinValue": {
            "type": "integer",
            "description": "The minimum allowed value or length. Used when the validation type is Min value or Min length.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this prompt validation, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpPromptResponse": {
        "type": "object",
        "properties": {
          "McpPromptId": {
            "type": "string",
            "description": "The prompt's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The prompt's name.",
            "nullable": true,
            "example": "summarize-invoices"
          },
          "Description": {
            "type": "string",
            "description": "The prompt's description.",
            "nullable": true,
            "example": "Summarizes outstanding invoices for a customer."
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the prompt status: 0 = Deleted, 1 = Active, 2 = Inactive.",
            "format": "int32",
            "example": 1
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptMessageResponse"
            },
            "description": "The messages that make up the prompt. Populated only when the endpoint includes message detail.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpPromptParameterResponse"
            },
            "description": "The parameters the prompt accepts. Populated only when the endpoint includes parameter detail.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpPromptStatus": {
        "enum": [
          "Deleted",
          "Active",
          "Inactive"
        ],
        "type": "string",
        "description": "The status of an MCP prompt.\n\n- `Deleted` — Deleted\n- `Active` — Active\n- `Inactive` — Inactive\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Deleted": "Deleted",
          "Active": "Active",
          "Inactive": "Inactive"
        }
      },
      "McpServerResponse": {
        "type": "object",
        "properties": {
          "McpServerId": {
            "type": "string",
            "description": "The MCP server's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The MCP server's name.",
            "nullable": true,
            "example": "Finance MCP server"
          },
          "Description": {
            "type": "string",
            "description": "The MCP server's description.",
            "nullable": true,
            "example": "Exposes finance data and actions to AI clients."
          },
          "CodeMode": {
            "type": "boolean",
            "description": "When true, the server exposes its tools as a single programmatic code tool instead of one\r\n            MCP tool per configured tool.",
            "example": true
          },
          "CodeModeToolName": {
            "type": "string",
            "description": "The editable name of the code tool used in code mode. Null or empty means the runtime uses\r\n            the default name `run_code`.",
            "nullable": true,
            "example": "run_code"
          },
          "CodeModeHideTools": {
            "type": "boolean",
            "description": "In code mode, false = hybrid (the code tool plus the individual tools), true = exclusive\r\n            (only the code tool is exposed).",
            "example": false
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolActionFieldResponse": {
        "type": "object",
        "properties": {
          "McpToolActionFieldId": {
            "type": "string",
            "description": "The action field mapping's unique identifier.",
            "format": "uuid",
            "example": "9b2fdd1c-6d3a-4c7e-8f21-2a4b6c8d0e13"
          },
          "ActionFieldId": {
            "type": "string",
            "description": "Identifier of the underlying action field this mapping targets.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ActionField": {
            "type": "string",
            "description": "The name of the action field being mapped.",
            "nullable": true,
            "example": "CustomerNumber"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the field's value is supplied: 0 = None, 1 = Constant, 2 = Parameter, 3 = User input, 4 = Date value, 5 = Client parameter.",
            "format": "int32",
            "example": 1
          },
          "ConstantValue": {
            "type": "string",
            "description": "The fixed value used when the value type is Constant.",
            "nullable": true,
            "example": "USA"
          },
          "ParameterValue": {
            "$ref": "#/components/schemas/McpToolParameterResponse"
          },
          "DateValue": {
            "type": "integer",
            "description": "Integer code for the relative date used when the value type is Date value.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this action field is required.",
            "nullable": true,
            "example": true
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "Integer code for how the default value is supplied: 0 = None, 1 = Constant, 2 = Parameter, 3 = User input, 4 = Date value, 5 = Client parameter.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "DefaultConstantValue": {
            "type": "string",
            "description": "The fixed default value used when the default value type is Constant.",
            "nullable": true,
            "example": "USA"
          },
          "DefaultDateValue": {
            "type": "integer",
            "description": "Integer code for the relative date used when the default value type is Date value.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolClientInstructionResponse": {
        "type": "object",
        "properties": {
          "McpToolClientInstructionId": {
            "type": "string",
            "description": "The client instruction's unique identifier.",
            "format": "uuid",
            "example": "1d2c3b4a-5e6f-7a8b-9c0d-1e2f3a4b5c6d"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code identifying the kind of client instruction.",
            "format": "int32",
            "example": 1
          },
          "Message": {
            "type": "string",
            "description": "The inline instruction text shown to the client.",
            "nullable": true,
            "example": "Always confirm the customer before running this tool."
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "Identifier of the shared instruction this references, when the instruction reuses a shared one.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "SharedInstructionName": {
            "type": "string",
            "description": "The name of the referenced shared instruction. Populated only when a shared instruction is referenced.",
            "nullable": true,
            "example": "Standard safety guidance"
          },
          "SharedInstructionContent": {
            "type": "string",
            "description": "The content of the referenced shared instruction. Populated only when a shared instruction is referenced.",
            "nullable": true,
            "example": "Always confirm the customer before running this tool."
          },
          "Client": {
            "$ref": "#/components/schemas/SimpleMcpClientResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolCompanyResponse": {
        "type": "object",
        "properties": {
          "McpToolCompanyId": {
            "type": "string",
            "description": "The tool-company association's unique identifier.",
            "format": "uuid",
            "example": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
          },
          "Company": {
            "$ref": "#/components/schemas/SimpleCompanyResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolHistoryResponse": {
        "type": "object",
        "properties": {
          "Date": {
            "type": "string",
            "description": "Date the tool call was made.",
            "format": "date-time",
            "example": "2024-03-12"
          },
          "User": {
            "$ref": "#/components/schemas/SimpleUserResponse"
          },
          "Request": {
            "type": "string",
            "description": "The request payload sent to the tool.",
            "nullable": true,
            "example": "{ \"customerNumber\": \"C00001\" }"
          },
          "Response": {
            "type": "string",
            "description": "The response payload returned by the tool.",
            "nullable": true,
            "example": "{ \"balance\": 1250.00 }"
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the call status: 0 = None, 1 = Started, 2 = Success, 3 = Failure.",
            "format": "int32",
            "example": 2
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message recorded when the call failed.",
            "nullable": true,
            "example": "Connection timed out."
          },
          "Client": {
            "type": "string",
            "description": "The client that made the tool call.",
            "nullable": true,
            "example": "Claude"
          },
          "IpAddress": {
            "type": "string",
            "description": "The IP address the tool call originated from.",
            "nullable": true,
            "example": "203.0.113.42"
          }
        },
        "additionalProperties": false
      },
      "McpToolParameterApplyType": {
        "enum": [
          "None",
          "Field",
          "Variable",
          "MaxRecords",
          "Company",
          "Lookup",
          "SortField",
          "SortDirection",
          "ResponseType",
          "Message",
          "MessageRecipient",
          "MessageTemplateParameter",
          "MessageAttachment",
          "MessageSubject",
          "ActionField",
          "ResponseFileName",
          "ZipFileType",
          "ZipFileName",
          "ExcelWorksheetName",
          "WorkflowParameter",
          "UploadFileContent",
          "UploadFilename",
          "UploadPath",
          "UploadCreateIfNotExists",
          "UploadFileNameConflictBehavior"
        ],
        "type": "string",
        "description": "How an MCP tool parameter binds — what part of the underlying query/action it drives.\n\n- `None` — Free user input (typed value)\n- `Field` — Entity field filter\n- `Variable` — Entity variable\n- `MaxRecords` — Maximum records\n- `Company` — Company\n- `Lookup` — Lookup\n- `SortField` — Sort field\n- `SortDirection` — Sort direction\n- `ResponseType` — Response type\n- `Message` — Message\n- `MessageRecipient` — Message recipient\n- `MessageTemplateParameter` — Message template parameter\n- `MessageAttachment` — Message attachment\n- `MessageSubject` — Message subject\n- `ActionField` — Action field\n- `ResponseFileName` — Response file name\n- `ZipFileType` — Zip file type\n- `ZipFileName` — Zip file name\n- `ExcelWorksheetName` — Excel worksheet name\n- `WorkflowParameter` — Workflow parameter\n- `UploadFileContent` — Upload file content\n- `UploadFilename` — Upload file name\n- `UploadPath` — Upload path\n- `UploadCreateIfNotExists` — Upload: create if not exists\n- `UploadFileNameConflictBehavior` — Upload file-name conflict behavior\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "None": "Free user input (typed value)",
          "Field": "Entity field filter",
          "Variable": "Entity variable",
          "MaxRecords": "Maximum records",
          "Company": "Company",
          "Lookup": "Lookup",
          "SortField": "Sort field",
          "SortDirection": "Sort direction",
          "ResponseType": "Response type",
          "Message": "Message",
          "MessageRecipient": "Message recipient",
          "MessageTemplateParameter": "Message template parameter",
          "MessageAttachment": "Message attachment",
          "MessageSubject": "Message subject",
          "ActionField": "Action field",
          "ResponseFileName": "Response file name",
          "ZipFileType": "Zip file type",
          "ZipFileName": "Zip file name",
          "ExcelWorksheetName": "Excel worksheet name",
          "WorkflowParameter": "Workflow parameter",
          "UploadFileContent": "Upload file content",
          "UploadFilename": "Upload file name",
          "UploadPath": "Upload path",
          "UploadCreateIfNotExists": "Upload: create if not exists",
          "UploadFileNameConflictBehavior": "Upload file-name conflict behavior"
        }
      },
      "McpToolParameterClientInstructionResponse": {
        "type": "object",
        "properties": {
          "McpToolClientInstructionId": {
            "type": "string",
            "description": "The client instruction's unique identifier.",
            "format": "uuid",
            "example": "9b1c3e7a-2d4f-4a6b-8c1e-5f7a9b0c2d3e"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the kind of client instruction.",
            "format": "int32",
            "example": 1
          },
          "Message": {
            "type": "string",
            "description": "The instruction text sent to the client for this parameter.",
            "nullable": true,
            "example": "Provide the customer name to filter the results."
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "Identifier of the shared instruction this instruction reuses, when one is referenced.",
            "format": "uuid",
            "nullable": true,
            "example": "4f2a8c10-3b9d-4e1f-9a2c-7d5e6f8a0b1c"
          },
          "SharedInstructionName": {
            "type": "string",
            "description": "Name of the referenced shared instruction.",
            "nullable": true,
            "example": "Customer filter guidance"
          },
          "SharedInstructionContent": {
            "type": "string",
            "description": "Content of the referenced shared instruction.",
            "nullable": true,
            "example": "Always ask for the customer name before running this tool."
          },
          "Client": {
            "$ref": "#/components/schemas/SimpleMcpClientResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolParameterListItemResponse": {
        "type": "object",
        "properties": {
          "McpToolParameterListItemId": {
            "type": "string",
            "description": "The list item's unique identifier.",
            "format": "uuid",
            "example": "2c5d7e9f-1a3b-4c6d-8e0f-9a1b2c3d4e5f"
          },
          "Key": {
            "type": "string",
            "description": "The list item's key (the value supplied for the parameter).",
            "nullable": true,
            "example": "open"
          },
          "Value": {
            "type": "string",
            "description": "The list item's display value (the label shown for the key).",
            "nullable": true,
            "example": "Open orders"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolParameterResponse": {
        "type": "object",
        "properties": {
          "McpToolParameterId": {
            "type": "string",
            "description": "The parameter's unique identifier.",
            "format": "uuid",
            "example": "7e2a4c6d-8b0f-4e1a-9c3d-5f7a9b1c2d3e"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the parameter kind: 1 = Parameter, 2 = User input.",
            "format": "int32",
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The parameter's name.",
            "nullable": true,
            "example": "CustomerName"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the parameter's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 16 = Color, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ApplyType": {
            "type": "integer",
            "description": "Integer code for how the parameter binds to the tool's query or action: 0 = Free user input, 1 = Entity field filter, 2 = Entity variable, 3 = Maximum records, 4 = Company, 5 = Lookup, 6 = Sort field, 7 = Sort direction, 8 = Response type, 9 = Message, 14 = Action field, and others.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field this parameter filters, when bound to a field.",
            "format": "uuid",
            "nullable": true,
            "example": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
          },
          "EntityVariableId": {
            "type": "string",
            "description": "Identifier of the entity variable this parameter sets, when bound to a variable.",
            "format": "uuid",
            "nullable": true,
            "example": "3c4d5e6f-7a8b-4c9d-0e1f-2a3b4c5d6e7f"
          },
          "LookupId": {
            "type": "string",
            "description": "Identifier of the lookup this parameter uses, when bound to a lookup.",
            "format": "uuid",
            "nullable": true,
            "example": "5e6f7a8b-9c0d-4e1f-2a3b-4c5d6e7f8a9b"
          },
          "Description": {
            "type": "string",
            "description": "Description of the parameter shown to the AI client.",
            "nullable": true,
            "example": "The name of the customer to search for."
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator applied when this parameter filters a field: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 6 = Contains, 7 = Starts with, 8 = Ends with, 14 = One of, 22 = Is null, 23 = Is not null, and others.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied by the client.",
            "nullable": true,
            "example": true
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterListItemResponse"
            },
            "description": "The allowed list items for a list parameter. Populated only when the endpoint includes list detail.",
            "nullable": true
          },
          "SortFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterSortFieldResponse"
            },
            "description": "The fields available to a sort parameter. Populated only when the endpoint includes sort detail.",
            "nullable": true
          },
          "Validations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterValidationResponse"
            },
            "description": "The validation rules applied to the parameter's value. Populated only when the endpoint includes validation detail.",
            "nullable": true
          },
          "ClientInstructions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterClientInstructionResponse"
            },
            "description": "The per-client instructions for this parameter. Populated only when the endpoint includes client instruction detail.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolParameterSortFieldResponse": {
        "type": "object",
        "properties": {
          "McpToolParameterSortFieldId": {
            "type": "string",
            "description": "The sort field's unique identifier.",
            "format": "uuid",
            "example": "8a0b1c2d-3e4f-4a5b-9c6d-7e8f9a0b1c2d"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolParameterValidationResponse": {
        "type": "object",
        "properties": {
          "McpToolValidationId": {
            "type": "string",
            "description": "The validation rule's unique identifier.",
            "format": "uuid",
            "example": "0b1c2d3e-4f5a-4b6c-8d7e-9f0a1b2c3d4e"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the validation rule: 1 = Regex, 2 = Maximum value, 3 = Minimum value, 4 = Maximum length, 5 = Minimum length, 6 = Valid list item, 8 = Value exists, 10 = Valid date format, 12 = Valid email, 14 = Valid GUID, 15 = Valid URL, 20 = Exact length, 27 = Value range, and others.",
            "format": "int32",
            "example": 1
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message returned when the value fails this rule.",
            "nullable": true,
            "example": "Value must be a valid email address."
          },
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value is matched against, for a regex rule.",
            "nullable": true,
            "example": "^[A-Z]{3}-\\d{4}$"
          },
          "MaxValue": {
            "type": "number",
            "description": "The maximum allowed value or length, for a maximum/range rule.",
            "format": "double",
            "nullable": true,
            "example": 100
          },
          "MinValue": {
            "type": "number",
            "description": "The minimum allowed value or length, for a minimum/range rule.",
            "format": "double",
            "nullable": true,
            "example": 1
          },
          "MaxDate": {
            "type": "string",
            "description": "The maximum allowed date, for a maximum-date rule.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-31"
          },
          "MinDate": {
            "type": "string",
            "description": "The minimum allowed date, for a minimum-date rule.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-01"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolPermissionType": {
        "enum": [
          "AlwaysAsk",
          "AlwaysAllow"
        ],
        "type": "string",
        "description": "How an MCP tool call is authorized when used as a connector AI tool.\n\n- `AlwaysAsk` — Always ask the user\n- `AlwaysAllow` — Always allow\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "AlwaysAsk": "Always ask the user",
          "AlwaysAllow": "Always allow"
        }
      },
      "McpToolResponse": {
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The tool's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The tool name exposed to MCP clients.",
            "nullable": true,
            "example": "get_customers"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the tool exposes: 1 = Get data, 4 = Run action, 6 = Get a file, 7 = Third-party MCP tool, 12 = Run script.",
            "format": "int32",
            "example": 1
          },
          "Description": {
            "type": "string",
            "description": "Human-readable description of the tool, shown to MCP clients and language models.",
            "nullable": true,
            "example": "Returns a list of customers for the connected company."
          },
          "Title": {
            "type": "string",
            "description": "Optional display title for the tool.",
            "nullable": true,
            "example": "Get customers"
          },
          "Status": {
            "type": "integer",
            "description": "Integer status code: 1 = Active, 2 = Inactive.",
            "format": "int32",
            "example": 1
          },
          "ConnectorId": {
            "type": "string",
            "description": "The connector the tool reads from. Its companies are the ones that may be added to the tool.",
            "format": "uuid",
            "nullable": true
          },
          "DefaultCompanyId": {
            "type": "string",
            "description": "The company used when the model doesn't (or can't) specify one.",
            "format": "uuid",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records the tool returns, when applicable.",
            "format": "int32",
            "nullable": true
          },
          "ResponseType": {
            "type": "integer",
            "description": "Integer code for how the tool formats its response.",
            "format": "int32",
            "nullable": true
          },
          "CodeModeOnly": {
            "type": "boolean",
            "description": "When true, the tool is reachable only from within the server's code tool (run_code): it is\r\n            hidden from the tools list and a direct call to it is rejected.",
            "example": false
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolParameterResponse"
            },
            "description": "The parameters created with the tool, when any were supplied on create.",
            "nullable": true
          },
          "ActionFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolActionFieldResponse"
            },
            "description": "The action fields created with the tool, when any were supplied on create.",
            "nullable": true
          },
          "ResponseFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolResponseFieldResponse"
            },
            "description": "The response (return) fields created with the tool, when any were supplied on create.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to the tool's related sub-resources (parameters, action fields, and response fields).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolResponseFieldResponse": {
        "type": "object",
        "properties": {
          "McpToolResponseFieldId": {
            "type": "string",
            "description": "The response field's unique identifier.",
            "format": "uuid",
            "example": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "ActionField": {
            "type": "string",
            "description": "The name of the action field this response field maps to, when sourced from an action.",
            "nullable": true,
            "example": "OrderTotal"
          },
          "Name": {
            "type": "string",
            "description": "The response field's name as returned to the client.",
            "nullable": true,
            "example": "Total"
          },
          "Description": {
            "type": "string",
            "description": "Description of the response field shown to the AI client.",
            "nullable": true,
            "example": "The total amount of the order."
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolResponseSortResponse": {
        "type": "object",
        "properties": {
          "McpToolResponseSortId": {
            "type": "string",
            "description": "Unique identifier of the MCP tool response sort rule.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Descending": {
            "type": "boolean",
            "description": "Whether the sort is in descending order. False or null sorts ascending.",
            "nullable": true,
            "example": false
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this sort rule.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolResponseType": {
        "enum": [
          "Text",
          "JsonObject",
          "JsonArray",
          "Csv",
          "Excel",
          "JsonArrayFile",
          "CsvFile",
          "Markdown",
          "MarkdownFile"
        ],
        "type": "string",
        "description": "The output format an MCP tool returns.\n\n- `Text` — Plain text\n- `JsonObject` — JSON object\n- `JsonArray` — JSON array\n- `Csv` — CSV\n- `Excel` — Excel workbook\n- `JsonArrayFile` — JSON array file\n- `CsvFile` — CSV file\n- `Markdown` — Markdown\n- `MarkdownFile` — Markdown file\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Text": "Plain text",
          "JsonObject": "JSON object",
          "JsonArray": "JSON array",
          "Csv": "CSV",
          "Excel": "Excel workbook",
          "JsonArrayFile": "JSON array file",
          "CsvFile": "CSV file",
          "Markdown": "Markdown",
          "MarkdownFile": "Markdown file"
        }
      },
      "McpToolRestrictionApplyResponse": {
        "type": "object",
        "properties": {
          "McpToolRestrictionApplyId": {
            "type": "string",
            "description": "Unique identifier of the MCP tool restriction apply rule.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "ApplyToType": {
            "type": "integer",
            "description": "Integer code for the kind of target the restriction is applied to: 1 = User, 2 = Team, 3 = MCP client.",
            "format": "int32",
            "example": 1
          },
          "ApplyToUser": {
            "$ref": "#/components/schemas/SimpleUserResponse"
          },
          "ApplyToTeam": {
            "$ref": "#/components/schemas/SimpleTeamResponse"
          },
          "ApplyToClient": {
            "$ref": "#/components/schemas/McpClientResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this apply rule.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolRestrictionResponse": {
        "type": "object",
        "properties": {
          "McpToolRestrictionId": {
            "type": "string",
            "description": "Unique identifier of the MCP tool restriction.",
            "format": "uuid",
            "example": "5c9f8d2a-1e44-4c3b-8f6a-2d7e9b0c1a23"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator the restriction applies: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/McpToolRestrictionValueResponse"
            },
            "description": "The values the restriction compares the field against.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this restriction.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "McpToolRestrictionValueId": {
            "type": "string",
            "description": "Unique identifier of the MCP tool restriction value.",
            "format": "uuid",
            "example": "7d3a1f60-92cc-4b1e-a0f5-6c8b2e4d9a17"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for where the value comes from: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against. Populated only when ValueType is Constant.",
            "nullable": true,
            "example": "Active"
          },
          "DateValue": {
            "type": "integer",
            "description": "Relative-date code used when ValueType is Date (for example 0 = Today, 1 = Yesterday, 2 = Tomorrow, 5 = Start of month, 6 = End of month).",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "FieldValue": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "ParameterValue": {
            "$ref": "#/components/schemas/McpToolParameterResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this restriction value.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolStatus": {
        "enum": [
          "Active",
          "Inactive"
        ],
        "type": "string",
        "description": "The status of an MCP tool.\n\n- `Active` — Active\n- `Inactive` — Inactive\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Active": "Active",
          "Inactive": "Inactive"
        }
      },
      "McpToolType": {
        "enum": [
          "Entity",
          "Action",
          "File",
          "ThirdParty",
          "RunScript"
        ],
        "type": "string",
        "description": "What an MCP tool exposes. Only Entity, Action, File, ThirdParty and RunScript are\r\n            accepted by the create endpoint; the others describe existing tools.\n\n- `Entity` — Get data\n- `Action` — Run action\n- `File` — Get a file\n- `ThirdParty` — Third-party MCP tool\n- `RunScript` — Run script\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Entity": "Get data",
          "Action": "Run action",
          "File": "Get a file",
          "ThirdParty": "Third-party MCP tool",
          "RunScript": "Run script"
        }
      },
      "McpToolValidationType": {
        "enum": [
          "Regex",
          "MaxValue",
          "MinValue",
          "MaxLength",
          "MinLength",
          "ValidListItem",
          "ValidCompany",
          "ValueExists",
          "RestrictionReturnsRecords",
          "DateFormat",
          "TimeFormat",
          "ValidEmail",
          "ValidIpAddress",
          "ValidGuid",
          "ValidUrl",
          "ValidSsn",
          "NumericOnly",
          "AlphaOnly",
          "AlphaNumericOnly",
          "ExactLength",
          "MaxDateConstant",
          "MinDateConstant",
          "MaxDateValue",
          "MinDateValue",
          "DateConstantRange",
          "DateValueRange",
          "ValueRange",
          "MaxTimeConstant",
          "MinTimeConstant",
          "TimeConstantRange"
        ],
        "type": "string",
        "description": "A validation rule applied to an MCP tool/prompt parameter's value.\n\n- `Regex` — Matches a regular expression\n- `MaxValue` — Maximum value\n- `MinValue` — Minimum value\n- `MaxLength` — Maximum length\n- `MinLength` — Minimum length\n- `ValidListItem` — Valid list item\n- `ValidCompany` — Valid company\n- `ValueExists` — Value exists\n- `RestrictionReturnsRecords` — Restriction returns records\n- `DateFormat` — Valid date format\n- `TimeFormat` — Valid time format\n- `ValidEmail` — Valid email\n- `ValidIpAddress` — Valid IP address\n- `ValidGuid` — Valid GUID\n- `ValidUrl` — Valid URL\n- `ValidSsn` — Valid SSN\n- `NumericOnly` — Numeric characters only\n- `AlphaOnly` — Alphabetic characters only\n- `AlphaNumericOnly` — Alphanumeric characters only\n- `ExactLength` — Exact length\n- `MaxDateConstant` — Maximum date (constant)\n- `MinDateConstant` — Minimum date (constant)\n- `MaxDateValue` — Maximum date (value)\n- `MinDateValue` — Minimum date (value)\n- `DateConstantRange` — Date range (constant)\n- `DateValueRange` — Date range (value)\n- `ValueRange` — Value range\n- `MaxTimeConstant` — Maximum time (constant)\n- `MinTimeConstant` — Minimum time (constant)\n- `TimeConstantRange` — Time range (constant)\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Regex": "Matches a regular expression",
          "MaxValue": "Maximum value",
          "MinValue": "Minimum value",
          "MaxLength": "Maximum length",
          "MinLength": "Minimum length",
          "ValidListItem": "Valid list item",
          "ValidCompany": "Valid company",
          "ValueExists": "Value exists",
          "RestrictionReturnsRecords": "Restriction returns records",
          "DateFormat": "Valid date format",
          "TimeFormat": "Valid time format",
          "ValidEmail": "Valid email",
          "ValidIpAddress": "Valid IP address",
          "ValidGuid": "Valid GUID",
          "ValidUrl": "Valid URL",
          "ValidSsn": "Valid SSN",
          "NumericOnly": "Numeric characters only",
          "AlphaOnly": "Alphabetic characters only",
          "AlphaNumericOnly": "Alphanumeric characters only",
          "ExactLength": "Exact length",
          "MaxDateConstant": "Maximum date (constant)",
          "MinDateConstant": "Minimum date (constant)",
          "MaxDateValue": "Maximum date (value)",
          "MinDateValue": "Minimum date (value)",
          "DateConstantRange": "Date range (constant)",
          "DateValueRange": "Date range (value)",
          "ValueRange": "Value range",
          "MaxTimeConstant": "Maximum time (constant)",
          "MinTimeConstant": "Minimum time (constant)",
          "TimeConstantRange": "Time range (constant)"
        }
      },
      "McpToolVariableResponse": {
        "type": "object",
        "properties": {
          "McpToolVariableId": {
            "type": "string",
            "description": "Unique identifier of the MCP tool variable value.",
            "format": "uuid",
            "example": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"
          },
          "Variable": {
            "$ref": "#/components/schemas/SimpleVariableResponse"
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for where the value comes from: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "example": 0
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value supplied to the variable. Populated only when ValueType is Constant.",
            "nullable": true,
            "example": "Open"
          },
          "DateValue": {
            "type": "integer",
            "description": "Relative-date code used when ValueType is Date (for example 0 = Today, 1 = Yesterday, 2 = Tomorrow, 5 = Start of month, 6 = End of month).",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "McpToolParameterId": {
            "type": "string",
            "description": "Identifier of the MCP tool parameter supplying the value. Populated only when ValueType is Parameter.",
            "format": "uuid",
            "nullable": true,
            "example": "4f0c2d8a-9b3e-4d5f-8a1b-6c7d8e9f0a1b"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this variable value.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "McpToolZipType": {
        "enum": [
          "Never",
          "MultipleFiles",
          "Always"
        ],
        "type": "string",
        "description": "When an MCP file tool zips its output files.\n\n- `Never` — Never zip\n- `MultipleFiles` — Zip only when there are multiple files\n- `Always` — Always zip\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Never": "Never zip",
          "MultipleFiles": "Zip only when there are multiple files",
          "Always": "Always zip"
        }
      },
      "MeResponse": {
        "type": "object",
        "properties": {
          "UserId": {
            "type": "string",
            "description": "Unique identifier of the authenticated user.",
            "format": "uuid",
            "example": "e2a8c1d4-6b3f-4e9a-8d2c-1f5b7a0c9e34"
          },
          "Type": {
            "type": "string",
            "description": "The kind of user: \"user\" for a regular user or \"api\" for an API user.",
            "nullable": true,
            "example": "user"
          },
          "Name": {
            "type": "string",
            "description": "The user's display name. Populated for API users.",
            "nullable": true,
            "example": "Reporting Service"
          },
          "Email": {
            "type": "string",
            "description": "The user's email address. Populated for regular users.",
            "nullable": true,
            "example": "jane.doe@example.com"
          },
          "FirstName": {
            "type": "string",
            "description": "The user's first name. Populated for regular users.",
            "nullable": true,
            "example": "Jane"
          },
          "LastName": {
            "type": "string",
            "description": "The user's last name. Populated for regular users.",
            "nullable": true,
            "example": "Doe"
          },
          "UsePaging": {
            "type": "boolean",
            "description": "Whether list results are paged for this user. Defaults to true.",
            "nullable": true,
            "example": true
          },
          "PageSize": {
            "type": "integer",
            "description": "The number of records shown per page. Defaults to 100.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "Theme": {
            "type": "string",
            "description": "The user's selected UI theme. Defaults to \"default\".",
            "nullable": true,
            "example": "default"
          },
          "TimeZone": {
            "type": "string",
            "description": "The user's time zone identifier.",
            "nullable": true,
            "example": "America/New_York"
          },
          "Disable_Notifications": {
            "type": "boolean",
            "description": "Whether notifications are disabled for this user.",
            "nullable": true,
            "example": false
          },
          "Locale": {
            "type": "string",
            "description": "The user's locale identifier.",
            "nullable": true,
            "example": "en-US"
          },
          "WidgetBaseUrl": {
            "type": "string",
            "description": "Base URL of the widget application.",
            "nullable": true,
            "example": "https://widget.popdock.com"
          },
          "ApiBaseUrl": {
            "type": "string",
            "description": "Base URL of the API.",
            "nullable": true,
            "example": "https://api.popdock.com"
          },
          "Account": {
            "$ref": "#/components/schemas/AccountResponse"
          },
          "Accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleAccountResponse"
            },
            "description": "The accounts the user has access to.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MergeEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "NestedEntityDetailAiFavoriteDataSourceRequest": {
        "required": [
          "EntityDetailAiDataSourceId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiDataSourceId": {
            "type": "string",
            "description": "The detail AI data source to link. Must belong to the same entity detail as the favorite. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          }
        },
        "additionalProperties": false,
        "description": "A data source to link to an entity detail AI favorite in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.WriteEntityDetailAiFavoriteDataSourceRequest but without EntityDetailAiFavoriteId —\r\n            the new favorite supplies it."
      },
      "NestedEntityDetailAiFavoriteParameterListItemRequest": {
        "required": [
          "Key",
          "Value"
        ],
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "description": "The stored value submitted when this list item is selected. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The label shown to the user for this list item. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A list item to create alongside an entity detail AI favorite parameter in the same request.\r\n            Equivalent to Popdock.WebApi.Models.Request.WriteEntityDetailAiFavoriteParameterListItemRequest but without\r\n            EntityDetailAiFavoriteParameterId — the new parameter supplies it."
      },
      "NestedEntityDetailAiFavoriteParameterRequest": {
        "required": [
          "FieldType",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The parameter's internal name, referenced from the prompt. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The parameter's display label shown to the user.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "Type": {
            "$ref": "#/components/schemas/DetailAiFavoriteParameterType"
          },
          "Script": {
            "type": "string",
            "description": "The calculation script used to compute the parameter's value, when it is a calculation.",
            "nullable": true
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places used when displaying a numeric parameter.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValueType": {
            "$ref": "#/components/schemas/DetailAiFavoriteParameterDefaultValueType"
          },
          "DefaultValueConstant": {
            "type": "string",
            "description": "The constant default value, used when the default value type is a constant.",
            "nullable": true
          },
          "DefaultValueDate": {
            "type": "integer",
            "description": "A relative-date default, used when the default value type is a date.",
            "format": "int32",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for this parameter.",
            "nullable": true
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the parameter's input field.",
            "nullable": true
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailAiFavoriteParameterListItemRequest"
            },
            "description": "Optional list items (key/value pairs) to create alongside the parameter. Each is created the\r\n            same way as a POST to `api/v3/entity-detail-ai-favorite-parameter-list-item`.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A parameter to create alongside an entity detail AI favorite in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostEntityDetailAiFavoriteParameterRequest but without EntityDetailAiFavoriteId — the new\r\n            favorite supplies it."
      },
      "NestedEntityDetailAiFavoriteToolRequest": {
        "required": [
          "EntityDetailAiToolId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiToolId": {
            "type": "string",
            "description": "The detail AI tool to link. Must belong to the same entity detail as the favorite. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          }
        },
        "additionalProperties": false,
        "description": "A tool to link to an entity detail AI favorite in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.WriteEntityDetailAiFavoriteToolRequest but without EntityDetailAiFavoriteId —\r\n            the new favorite supplies it."
      },
      "NestedEntityDetailAiToolRequest": {
        "required": [
          "ConnectorAiToolId"
        ],
        "type": "object",
        "properties": {
          "ConnectorAiToolId": {
            "type": "string",
            "description": "The connector AI tool to make available to the detail's prompt. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          }
        },
        "additionalProperties": false,
        "description": "An AI tool to create alongside an entity detail in the same request. Equivalent to a POST to\r\n            `api/v3/entity-detail-ai-tool` but without EntityDetailId — the parent detail supplies it.\r\n            Only valid when the detail's Type is AiPrompt."
      },
      "NestedEntityDetailFieldRequest": {
        "required": [
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field to display on the detail view. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
          }
        },
        "additionalProperties": false,
        "description": "A field to create alongside an entity detail in the same request. Equivalent to a POST to\r\n            `api/v3/entity-detail-field` but without EntityDetailId — the parent detail supplies it."
      },
      "NestedEntityDetailFilterRequest": {
        "required": [
          "EntityFieldId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field to filter on. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
          },
          "Type": {
            "type": "integer",
            "description": "The filter/restriction operator code. Required when creating (POST).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailFilterValueRequest"
            },
            "description": "Optional values for the filter, numbered in the order supplied. There is no standalone\r\n            endpoint for detail filter values; this is the only way to create them via the API.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A filter to create alongside an entity detail in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostEntityDetailFilterRequest but without EntityDetailId — the parent detail supplies it."
      },
      "NestedEntityDetailFilterValueRequest": {
        "type": "object",
        "properties": {
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailFilterValueRequest.ValueType is Constant.",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field whose value is used, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailFilterValueRequest.ValueType is Field.",
            "format": "uuid",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailFilterValueRequest.ValueType is a date value.",
            "format": "int32",
            "nullable": true
          },
          "VariableId": {
            "type": "string",
            "description": "The variable whose value is used, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailFilterValueRequest.ValueType is Variable.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A value for a detail filter created in the same request. The parent filter supplies the\r\n            filter id. Values are numbered in the order supplied."
      },
      "NestedEntityDetailItemRequest": {
        "required": [
          "DetailItemId"
        ],
        "type": "object",
        "properties": {
          "DetailItemId": {
            "type": "string",
            "description": "The detail item to add to the detail view. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          }
        },
        "additionalProperties": false,
        "description": "An item to create alongside an entity detail in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostEntityDetailItemRequest but without EntityDetailId — the parent detail supplies it."
      },
      "NestedEntityDetailVariableRequest": {
        "required": [
          "EntityVariableId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable to bind on the detail view. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "The field or variable whose value is used, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailVariableRequest.ValueType is a reference.",
            "format": "uuid",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailVariableRequest.ValueType is Constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Post.NestedEntityDetailVariableRequest.ValueType is a date value.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A variable binding to create alongside an entity detail in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostEntityDetailVariableRequest but without EntityDetailId — the parent detail supplies it."
      },
      "NestedFavoriteColumnRequest": {
        "required": [
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field this column shows. Required, and must belong to the favorite's entity. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ColumnWidth": {
            "type": "integer",
            "description": "The column's display width in pixels.",
            "format": "int32",
            "nullable": true
          },
          "SortNumber": {
            "type": "integer",
            "description": "The column's position in the sort order, lowest first.",
            "format": "int32",
            "nullable": true
          },
          "SortDirection": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          },
          "GroupNumber": {
            "type": "integer",
            "description": "The column's position in the grouping order, lowest first.",
            "format": "int32",
            "nullable": true
          },
          "GroupDirection": {
            "type": "integer",
            "description": "Integer code for the grouping direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the column: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true
          },
          "ConversionType": {
            "type": "integer",
            "description": "Integer code for the value conversion applied to the column, such as a currency or unit conversion. Null when no conversion is applied.",
            "format": "int32",
            "nullable": true
          },
          "PivotValueNumber": {
            "type": "integer",
            "description": "The column's position among the value fields in a pivot layout.",
            "format": "int32",
            "nullable": true
          },
          "PivotColumnNumber": {
            "type": "integer",
            "description": "The column's position among the column fields in a pivot layout.",
            "format": "int32",
            "nullable": true
          },
          "PivotRowNumber": {
            "type": "integer",
            "description": "The column's position among the row fields in a pivot layout.",
            "format": "int32",
            "nullable": true
          },
          "DateFormat": {
            "type": "integer",
            "description": "Integer code for the display granularity applied to a date column: 1 = Full date, 2 = Day of month, 3 = Day of week, 4 = Month, 5 = Year, 6 = Month and year, 7 = Fiscal period, 8 = Fiscal year, 9 = Fiscal period and year.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A column to create alongside a favorite in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostFavoriteColumnRequest but without FavoriteId — the parent favorite supplies it — and with\r\n            the optional display settings normally applied via PATCH so a complete view can be built in one call.\r\n            Columns are appended in the order supplied."
      },
      "NestedFavoriteRestrictionRequest": {
        "type": "object",
        "properties": {
          "FieldId": {
            "type": "string",
            "description": "The entity field the restriction filters on. Must belong to the favorite's entity when supplied.",
            "format": "uuid",
            "nullable": true
          },
          "Operator": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Conjunctive": {
            "type": "integer",
            "description": "How this restriction joins to the previous one: 0 = none, 1 = and, 2 = or.",
            "format": "int32",
            "nullable": true
          },
          "SubqueryId": {
            "type": "string",
            "description": "The subquery the restriction targets, when filtering on a related list.",
            "format": "uuid",
            "nullable": true
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedFavoriteRestrictionValueRequest"
            },
            "description": "The values the operator compares against (e.g. one for Equals, two for Between).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A restriction (filter) to create alongside a favorite in the same request, together with its values.\r\n            Equivalent to a POST to `api/v3/favorite-restriction` (plus `api/v3/favorite-restriction-value` for\r\n            each value) but without FavoriteId — the parent favorite supplies it. Restrictions are numbered in the order\r\n            supplied."
      },
      "NestedFavoriteRestrictionValueRequest": {
        "type": "object",
        "properties": {
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Post.NestedFavoriteRestrictionValueRequest.ValueType is Constant.",
            "nullable": true
          },
          "DateValueType": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Post.NestedFavoriteRestrictionValueRequest.ValueType is a date value.",
            "format": "int32",
            "nullable": true
          },
          "FieldId": {
            "type": "string",
            "description": "The field whose value is used, when Popdock.WebApi.Models.Request.Post.NestedFavoriteRestrictionValueRequest.ValueType is Field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A value for a favorite restriction created in the same request. Equivalent to a POST to\r\n            `api/v3/favorite-restriction-value` but without RestrictionId — the parent restriction supplies it.\r\n            Values are numbered in the order supplied."
      },
      "NestedFavoriteSharingRequest": {
        "required": [
          "ShareType",
          "UserTeamId"
        ],
        "type": "object",
        "properties": {
          "UserTeamId": {
            "type": "string",
            "description": "The id of the user or team to share with (matching Popdock.WebApi.Models.Request.Post.NestedFavoriteSharingRequest.ShareType). Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ShareType": {
            "$ref": "#/components/schemas/SharingType"
          }
        },
        "additionalProperties": false,
        "description": "A share to create alongside a favorite in the same request, granting a user or team access.\r\n            Equivalent to a POST to `api/v3/favorite-sharing` but without FavoriteId — the parent favorite\r\n            supplies it."
      },
      "NestedFavoriteVariableRequest": {
        "required": [
          "EntityVariableId"
        ],
        "type": "object",
        "properties": {
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable this sets a value for. Required, and must belong to the favorite's entity. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "The value supplied for the variable. Its meaning depends on Popdock.WebApi.Models.Request.Post.NestedFavoriteVariableRequest.ValueType.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A variable value to create alongside a favorite in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.WriteFavoriteVariableRequest but without FavoriteId — the parent favorite supplies it."
      },
      "NestedLookupRestrictionRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the restriction filters on. Required; must belong to the lookup's entity.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedLookupRestrictionValueRequest"
            },
            "description": "The values the operator compares against (e.g. one for Equals, two for Between).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A restriction (filter) to create alongside a lookup in the same request, together with its values.\r\n            Equivalent to a POST to `api/v3/lookup-restriction` (plus `api/v3/lookup-restriction-value` for each\r\n            value) but without LookupId — the parent lookup supplies it."
      },
      "NestedLookupRestrictionValueRequest": {
        "type": "object",
        "properties": {
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Post.NestedLookupRestrictionValueRequest.ValueType is Constant.",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field whose value is used, when Popdock.WebApi.Models.Request.Post.NestedLookupRestrictionValueRequest.ValueType is Field.",
            "format": "uuid",
            "nullable": true
          },
          "DateTimeValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Post.NestedLookupRestrictionValueRequest.ValueType is a date value.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A value for a lookup restriction created in the same request. Equivalent to a POST to\r\n            `api/v3/lookup-restriction-value` but without LookupRestrictionId — the parent restriction supplies it."
      },
      "NestedMcpPromptParameterRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The prompt parameter's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the prompt parameter.",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this parameter must be supplied.",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "A human-readable display title for the parameter.",
            "nullable": true
          },
          "Validations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpPromptParameterValidationRequest"
            },
            "description": "Optional validation rules to create for this parameter. Each is created the same way as a POST to\r\n            `api/v3/mcp-prompt-parameter-validation`; the first invalid rule fails the request.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A parameter to create alongside an MCP prompt in the same request. Equivalent to a POST to\r\n            `api/v3/mcp-prompt-parameter` but without McpPromptId — the parent prompt supplies it."
      },
      "NestedMcpPromptParameterValidationRequest": {
        "required": [
          "ErrorMessage",
          "Type"
        ],
        "type": "object",
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/McpToolValidationType"
          },
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value must match. Used when the validation type is Regex.",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message shown when the value fails this validation. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "MaxValue": {
            "type": "integer",
            "description": "The maximum allowed value or length. Used when the validation type is Max value or Max length.",
            "format": "int32",
            "nullable": true
          },
          "MinValue": {
            "type": "integer",
            "description": "The minimum allowed value or length. Used when the validation type is Min value or Min length.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A validation rule to create alongside an MCP prompt parameter in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostMcpPromptParameterValidationRequest but without McpPromptParameterId — the parent parameter supplies it."
      },
      "NestedMcpToolActionFieldRequest": {
        "required": [
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "ValueType": {
            "type": "integer",
            "description": "How the field's value is supplied. Required on create. Legacy integer codes are also accepted. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "ActionFieldId": {
            "type": "string",
            "description": "Identifier of the underlying action field this mapping targets.",
            "format": "uuid",
            "nullable": true
          },
          "ActionField": {
            "type": "string",
            "description": "The name of the action field being mapped.",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Post.NestedMcpToolActionFieldRequest.ValueType is Constant.",
            "nullable": true
          },
          "McpToolParameterId": {
            "type": "string",
            "description": "The tool parameter whose value is used, when Popdock.WebApi.Models.Request.Post.NestedMcpToolActionFieldRequest.ValueType is Parameter.",
            "format": "uuid",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Post.NestedMcpToolActionFieldRequest.ValueType is Date value.",
            "format": "int32",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this action field is required.",
            "nullable": true
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "How the default value is supplied. Legacy integer codes are also accepted.",
            "format": "int32",
            "nullable": true
          },
          "DefaultConstantValue": {
            "type": "string",
            "description": "The literal default value, when Popdock.WebApi.Models.Request.Post.NestedMcpToolActionFieldRequest.DefaultValueType is Constant.",
            "nullable": true
          },
          "DefaultDateValue": {
            "type": "integer",
            "description": "The relative-date code for the default value, when Popdock.WebApi.Models.Request.Post.NestedMcpToolActionFieldRequest.DefaultValueType is Date value.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An action field to create alongside an MCP tool in the same request. Equivalent to\r\n            WriteMcpToolActionFieldRequest but without McpToolId — the parent tool supplies it."
      },
      "NestedMcpToolParameterRequest": {
        "required": [
          "ApplyType",
          "Description",
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The parameter's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The parameter's display title.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "ApplyType": {
            "$ref": "#/components/schemas/McpToolParameterApplyType"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field this parameter filters, when bound to a field.",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "Identifier of the entity variable this parameter sets, when bound to a variable.",
            "format": "uuid",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the parameter shown to the AI client. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied by the client.",
            "nullable": true
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostMcpToolParameterListItemRequest"
            },
            "description": "Optional allowed list items to create alongside the parameter.",
            "nullable": true
          },
          "SortFields": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the entity fields this parameter can sort by, created alongside the parameter.",
            "nullable": true
          },
          "ActionField": {
            "type": "string",
            "description": "For an action field parameter, the name of the action field to bind to.",
            "nullable": true
          },
          "ActionFieldId": {
            "type": "string",
            "description": "For an action field parameter, the identifier of the action field to bind to.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A parameter to create alongside an MCP tool in the same request. Equivalent to\r\n            Popdock.WebApi.Models.Request.Post.PostMcpToolParameterRequest but without McpToolId — the parent tool supplies it."
      },
      "NestedMcpToolResponseFieldRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The response field's name as returned to the client. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the response field shown to the AI client.",
            "nullable": true
          },
          "ActionField": {
            "type": "string",
            "description": "The name of the action field this response field maps to, when sourced from an action.",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field this response field maps to, when sourced from an entity field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A response (return) field to create alongside an MCP tool in the same request. Equivalent\r\n            to Popdock.WebApi.Models.Request.Post.PostMcpToolResponseFieldRequest but without McpToolId — the parent tool supplies it."
      },
      "NestedMcpToolRestrictionApplyRequest": {
        "type": "object",
        "properties": {
          "ApplyToType": {
            "type": "integer",
            "description": "What the restriction applies to: 1 = user, 2 = team, 3 = MCP client.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ApplyToId": {
            "type": "string",
            "description": "The id of the user, team or MCP client the restriction applies to. Must belong to your account.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An apply rule to create alongside an MCP tool restriction in the same request. Equivalent to a POST to\r\n            `api/v3/mcp-tool-restriction-apply` but without McpToolRestrictionId — the parent restriction supplies it."
      },
      "NestedMcpToolRestrictionValueRequest": {
        "type": "object",
        "properties": {
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The position of the value within the restriction (e.g. 1 and 2 for a Between operator). Defaults to\r\n            the order the values appear in the request.",
            "format": "int32",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Post.NestedMcpToolRestrictionValueRequest.ValueType is Constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Post.NestedMcpToolRestrictionValueRequest.ValueType is Date.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field whose value is used, when Popdock.WebApi.Models.Request.Post.NestedMcpToolRestrictionValueRequest.ValueType is Field.",
            "format": "uuid",
            "nullable": true
          },
          "McpToolParameterId": {
            "type": "string",
            "description": "The tool parameter whose value is used, when Popdock.WebApi.Models.Request.Post.NestedMcpToolRestrictionValueRequest.ValueType is Parameter.",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable whose value is used, when Popdock.WebApi.Models.Request.Post.NestedMcpToolRestrictionValueRequest.ValueType is Variable.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A value for an MCP tool restriction created in the same request. Equivalent to a POST to\r\n            `api/v3/mcp-tool-restriction-value` but without McpToolRestrictionId — the parent restriction supplies it."
      },
      "OptimizationType": {
        "enum": [
          "Header",
          "Parameter",
          "Body",
          "Placeholder"
        ],
        "type": "string"
      },
      "PagingMethod": {
        "enum": [
          "None",
          "PageCount",
          "PageOffset",
          "NextPageNumber",
          "NextPageUrl",
          "Custom",
          "ItemCount",
          "Cursor"
        ],
        "type": "string"
      },
      "PatchActionRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name for the action.",
            "nullable": true,
            "example": "Create Support Ticket"
          },
          "Description": {
            "type": "string",
            "description": "New description of what the action does.",
            "nullable": true,
            "example": "Creates a support ticket in the source system."
          },
          "ShowType": {
            "$ref": "#/components/schemas/ActionShowType"
          },
          "ConfirmationPrompt": {
            "type": "string",
            "description": "Confirmation prompt shown before the action runs.",
            "nullable": true,
            "example": "Create this ticket?"
          },
          "SubmitButtonLabel": {
            "type": "string",
            "description": "Label for the submit/confirm button.",
            "nullable": true,
            "example": "Submit"
          },
          "CancelButtonLabel": {
            "type": "string",
            "description": "Label for the cancel button.",
            "nullable": true,
            "example": "Discard"
          },
          "Endpoint": {
            "type": "string",
            "description": "Endpoint path called by a REST action (relative to the connector's base URL).",
            "nullable": true,
            "example": "/v2/tickets"
          },
          "Method": {
            "$ref": "#/components/schemas/RequestMethod"
          },
          "Body": {
            "type": "string",
            "description": "Request body template for a REST action. May contain {placeholders} for parameters.",
            "nullable": true
          },
          "BodyType": {
            "$ref": "#/components/schemas/BodyType"
          },
          "RemoveEmptyBodyObjects": {
            "type": "boolean",
            "description": "When true, empty objects are removed from the request body before sending.",
            "nullable": true,
            "example": true
          },
          "RemoveEmptyBodyProperties": {
            "type": "boolean",
            "description": "When true, empty properties are removed from the request body before sending.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing action. Only supplied properties are changed."
      },
      "PatchAiPromptEntityAttachmentSortRequest": {
        "type": "object",
        "properties": {
          "Direction": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an AI prompt entity attachment sort."
      },
      "PatchBrowserExtensionPageAttachmentRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a browser extension page attachment."
      },
      "PatchBrowserExtensionPageFieldRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The field's display name.",
            "nullable": true
          },
          "Selector": {
            "type": "string",
            "description": "The selector used to read this field's value from the page.",
            "nullable": true
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying the kind of selector used. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a browser extension page field. Only supplied values are changed."
      },
      "PatchBrowserExtensionPageRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The page's display name.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "The URL path that identifies this page.",
            "nullable": true
          },
          "WidgetId": {
            "type": "string",
            "description": "The identifier of the widget displayed on this page, if any.",
            "format": "uuid",
            "nullable": true
          },
          "PageIdentificationType": {
            "type": "integer",
            "description": "Integer code identifying how the page is matched. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true
          },
          "IframeSelector": {
            "type": "string",
            "description": "The selector for the iframe the extension targets on this page.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a browser extension page."
      },
      "PatchBrowserExtensionPromptParameterRequest": {
        "type": "object",
        "properties": {
          "Type": {
            "type": "integer",
            "description": "Integer code identifying how the parameter value is supplied (for example a constant or a page field). Setting it resets the page field and constant value. No named code set is defined; treat the value as opaque.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BrowserExtensionPageFieldId": {
            "type": "string",
            "description": "The identifier of the page field that supplies the parameter value. Omit to leave unchanged; set ClearPageField to detach.",
            "format": "uuid",
            "nullable": true,
            "example": "4e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8091"
          },
          "ClearPageField": {
            "type": "boolean",
            "description": "When true, clears the page field association (BrowserExtensionPageFieldId).",
            "example": false
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value supplied for the parameter. Omit to leave unchanged.",
            "nullable": true,
            "example": "USD"
          }
        },
        "additionalProperties": false
      },
      "PatchBrowserExtensionPromptRequest": {
        "type": "object",
        "properties": {
          "SlashCommand": {
            "type": "string",
            "description": "The slash command that triggers the prompt. Omit to leave unchanged.",
            "nullable": true,
            "example": "/summarize"
          },
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The page to associate the prompt with. Omit to leave unchanged; set ClearPage to detach.",
            "format": "uuid",
            "nullable": true,
            "example": "4e5f6a7b-8c9d-0e1f-2a3b-4c5d6e7f8091"
          },
          "BrowserExtensionPromptGroupId": {
            "type": "string",
            "description": "The prompt group to place the prompt in. Omit to leave unchanged; set ClearGroup to detach.",
            "format": "uuid",
            "nullable": true,
            "example": "5d6e7f80-9112-2334-4556-677889900112"
          },
          "ClearPage": {
            "type": "boolean",
            "description": "When true, detaches the prompt from its page (clears BrowserExtensionPageId).",
            "example": false
          },
          "ClearGroup": {
            "type": "boolean",
            "description": "When true, removes the prompt from its group (clears BrowserExtensionPromptGroupId).",
            "example": false
          }
        },
        "additionalProperties": false
      },
      "PatchBrowserExtensionRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The browser extension's display name.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the browser extension.",
            "nullable": true
          },
          "WelcomeMessage": {
            "type": "string",
            "description": "Welcome message shown to the user when a conversation begins.",
            "nullable": true
          },
          "SystemPrompt": {
            "type": "string",
            "description": "System prompt supplied to the AI assistant for this browser extension.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a browser extension."
      },
      "PatchBrowserExtensionUrlRequest": {
        "type": "object",
        "properties": {
          "Url": {
            "type": "string",
            "description": "The host URL the extension runs on.",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The display name for this URL configuration.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a browser extension URL."
      },
      "PatchCompanyRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name for the company.",
            "nullable": true,
            "example": "Fabrikam Global"
          },
          "DatabaseName": {
            "type": "string",
            "description": "New underlying database/company identifier in the source system.",
            "nullable": true,
            "example": "FABRIKAM2"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing company. Only supplied properties are changed."
      },
      "PatchConnectorRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name for the connector.",
            "nullable": true,
            "example": "Finance — Dynamics GP"
          },
          "DefaultCompanyId": {
            "type": "string",
            "description": "Company selected by default when querying this connector.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "CompanyPrompt": {
            "type": "string",
            "description": "Singular label used for a \"company\" in this connector's UI.",
            "nullable": true,
            "example": "Company"
          },
          "CompanyPluralPrompt": {
            "type": "string",
            "description": "Plural label used for \"companies\" in this connector's UI.",
            "nullable": true,
            "example": "Companies"
          },
          "BaseUrl": {
            "type": "string",
            "description": "Base URL used for the connector's API requests.",
            "nullable": true,
            "example": "https://api.example.com/v1"
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format numbers and dates returned by the connector.",
            "nullable": true,
            "example": "en-US"
          },
          "ChildCompanyPrompt": {
            "type": "string",
            "description": "Singular label used for a child company (e.g. a division or site).",
            "nullable": true,
            "example": "Division"
          },
          "ChildCompanyPluralPrompt": {
            "type": "string",
            "description": "Plural label used for child companies.",
            "nullable": true,
            "example": "Divisions"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing connector. Only supplied properties are changed."
      },
      "PatchEndpointFieldRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The name the field is exposed as in the endpoint output.",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The underlying entity field exposed by this endpoint field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an endpoint field."
      },
      "PatchEndpointParameterRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The parameter's name as used in the endpoint request.",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied in the request.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an endpoint parameter."
      },
      "PatchEndpointRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The endpoint's display name.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The endpoint's description.",
            "nullable": true
          },
          "Url": {
            "type": "string",
            "description": "The endpoint's URL path.",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "The favorite (saved query configuration) the endpoint is based on.",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The company (organization unit) the endpoint is scoped to.",
            "format": "uuid",
            "nullable": true
          },
          "DefaultFormat": {
            "type": "string",
            "description": "The default response format returned by the endpoint.",
            "nullable": true
          },
          "SingleRecord": {
            "type": "boolean",
            "description": "Whether the endpoint returns only a single record.",
            "nullable": true
          },
          "SingleValue": {
            "type": "boolean",
            "description": "Whether the endpoint returns only a single value.",
            "nullable": true
          },
          "FieldName": {
            "type": "string",
            "description": "The name of the field the endpoint filters or returns when restricted to a single field.",
            "nullable": true
          },
          "FieldValue": {
            "type": "string",
            "description": "The value used to filter the endpoint when restricted to a single field value.",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records the endpoint returns.",
            "format": "int32",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "The locale applied to the endpoint's results.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an endpoint."
      },
      "PatchEndpointSortRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The field the endpoint results are sorted by.",
            "format": "uuid",
            "nullable": true
          },
          "Descending": {
            "type": "boolean",
            "description": "Whether the sort is in descending order; false or null sorts ascending.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an endpoint sort."
      },
      "PatchEntityAiPromptAttachmentRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the attachment.",
            "nullable": true
          },
          "AttachmentType": {
            "type": "integer",
            "description": "Integer code for the attachment type: 1 = List, 2 = File, 3 = Folder, 4 = Field, 5 = Favorite.",
            "format": "int32",
            "nullable": true
          },
          "ConnectorId": {
            "type": "string",
            "description": "The connector the attachment draws data from. Populated only for connector-based attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "The entity (list) the attachment draws data from. Populated only for list attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "The saved favorite the attachment draws data from. Populated only for favorite attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the attachment draws data from. Populated only for field attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "The file or folder path for file and folder attachment types.",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records included from the attachment source.",
            "format": "int32",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "An optional message included with the attachment when passed to the AI model.",
            "nullable": true
          },
          "ChunkSize": {
            "type": "integer",
            "description": "The number of records per chunk when the attachment data is split for the AI model.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an AI prompt entity attachment."
      },
      "PatchEntityColorCodingRequest": {
        "type": "object",
        "properties": {
          "BackgroundColorId": {
            "type": "string",
            "description": "The identifier of the background color applied when the color coding matches.",
            "nullable": true
          },
          "TextColorId": {
            "type": "string",
            "description": "The identifier of the text color applied when the color coding matches.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an entity color coding."
      },
      "PatchEntityDetailAiFavoriteParameterRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The parameter's internal name, referenced from the prompt.",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The parameter's display label shown to the user.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "Script": {
            "type": "string",
            "description": "The calculation script used to compute the parameter's value, when it is a calculation.",
            "nullable": true
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places used when displaying a numeric parameter.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValueType": {
            "$ref": "#/components/schemas/DetailAiFavoriteParameterDefaultValueType"
          },
          "DefaultValueConstant": {
            "type": "string",
            "description": "The constant default value, used when the default value type is a constant.",
            "nullable": true
          },
          "DefaultValueDate": {
            "type": "integer",
            "description": "A relative-date default, used when the default value type is a date.",
            "format": "int32",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for this parameter.",
            "nullable": true
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the parameter's input field.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an entity detail AI favorite parameter."
      },
      "PatchEntityDetailAiFavoriteRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The AI favorite's display name.",
            "nullable": true
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text sent to the AI when the favorite is run.",
            "nullable": true
          },
          "AiToneModifier": {
            "type": "string",
            "description": "The tone modifier applied to the AI response.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an entity detail AI favorite."
      },
      "PatchEntityDetailFilterRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field to filter on.",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The filter/restriction operator code.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an entity detail filter."
      },
      "PatchEntityDetailItemRequest": {
        "type": "object",
        "properties": {
          "DetailItemId": {
            "type": "string",
            "description": "The detail item to add to the detail view.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an entity detail item."
      },
      "PatchEntityDetailRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name for the detail.",
            "nullable": true,
            "example": "Order Summary"
          },
          "Description": {
            "type": "string",
            "description": "New description for the detail.",
            "nullable": true,
            "example": "AI summary of the selected order."
          },
          "Url": {
            "type": "string",
            "description": "URL opened by the detail (for URL/embed panels). Supports field tokens like {FieldName}.",
            "nullable": true,
            "example": "https://example.com/customers/{CustomerId}"
          },
          "AiPrompt": {
            "type": "string",
            "description": "Prompt text sent to the AI model (for AI panels).",
            "nullable": true,
            "example": "Summarize this order in two sentences."
          },
          "AiConnectorId": {
            "type": "string",
            "description": "AI connector used to run the prompt.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "AiModelId": {
            "type": "string",
            "description": "AI model used to run the prompt.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "AI tone modifier applied to the prompt's output.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "AiPromptType": {
            "$ref": "#/components/schemas/DetailAiPromptType"
          },
          "AiAllowConversation": {
            "type": "boolean",
            "description": "When true, the user may continue the AI conversation after the initial response.",
            "nullable": true,
            "example": true
          },
          "AiShowInitialPrompt": {
            "type": "boolean",
            "description": "When true, the initial prompt is shown to the user.",
            "nullable": true,
            "example": true
          },
          "AiAttachDatabaseSchema": {
            "type": "boolean",
            "description": "When true, the database schema is attached to the AI context.",
            "nullable": true,
            "example": false
          },
          "AiListDisplayType": {
            "type": "integer",
            "description": "Display-type code for AI list results.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "AiAllowToneChanges": {
            "type": "boolean",
            "description": "When true, the user may change the AI tone.",
            "nullable": true,
            "example": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records included in the detail.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "MaxCategories": {
            "type": "integer",
            "description": "Maximum number of categories included in the detail.",
            "format": "int32",
            "nullable": true,
            "example": 10
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing entity detail (panel/view). Only supplied properties are changed."
      },
      "PatchEntityDetailVariableRequest": {
        "type": "object",
        "properties": {
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable to bind on the detail view.",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "The field or variable whose value is used, when Popdock.WebApi.Models.Request.Patch.PatchEntityDetailVariableRequest.ValueType is a reference.",
            "format": "uuid",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Patch.PatchEntityDetailVariableRequest.ValueType is Constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Patch.PatchEntityDetailVariableRequest.ValueType is a date value.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an entity detail variable binding."
      },
      "PatchEntityFieldRequest": {
        "type": "object",
        "properties": {
          "DisplayName": {
            "type": "string",
            "description": "New display name shown for the field in the UI.",
            "nullable": true,
            "example": "Customer"
          },
          "Type": {
            "$ref": "#/components/schemas/FieldType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing entity field. Only supplied properties are changed."
      },
      "PatchEntityMatrixColumnRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The matrix column's display name.",
            "nullable": true
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "Script": {
            "type": "string",
            "description": "Expression used to compute the column's value. Populated only for calculation columns.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a matrix column."
      },
      "PatchEntityMatrixRowRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The matrix row's display name.",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "Expression used when the row is a Calculation.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of rows to generate for a Dynamic row.",
            "format": "int32",
            "nullable": true
          },
          "Granularity": {
            "type": "integer",
            "description": "Date grouping granularity when the row is based on a date field.",
            "format": "int32",
            "nullable": true
          },
          "SortType": {
            "$ref": "#/components/schemas/MatrixRowSortType"
          },
          "SortColumn": {
            "type": "string",
            "description": "Identifier of the column the row is sorted by when SortType is By a column.",
            "format": "uuid",
            "nullable": true
          },
          "SortDescending": {
            "type": "boolean",
            "description": "Whether the row is sorted in descending order.",
            "nullable": true
          },
          "HideEmptyRows": {
            "type": "boolean",
            "description": "Whether rows with no values are hidden.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a matrix row."
      },
      "PatchEntityMergeRequest": {
        "type": "object",
        "properties": {
          "Alias": {
            "type": "string",
            "description": "Display alias used for the merged source within the custom entity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a merge entity."
      },
      "PatchEntityRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name for the entity.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group this entity belongs to.",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing entity (list/table). Only supplied properties are changed."
      },
      "PatchEntityRestOptimizationRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field this optimization filters on.",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/OptimizationType"
          },
          "Key": {
            "type": "string",
            "description": "The key (header name, query-parameter name, or body key) the optimized value is written to.",
            "nullable": true
          },
          "Operator": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a REST optimization that pushes a field filter down to the API."
      },
      "PatchEntityTableRequest": {
        "type": "object",
        "properties": {
          "Alias": {
            "type": "string",
            "description": "Alias used to reference the table in joins and scripts.",
            "nullable": true,
            "example": "orders"
          },
          "Summary": {
            "type": "boolean",
            "description": "When true, the table is treated as a summary (aggregated) source.",
            "nullable": true,
            "example": true
          },
          "JoinType": {
            "type": "integer",
            "description": "Join-type code describing how this table joins to its parent.",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing entity table. Only supplied properties are changed."
      },
      "PatchEntityVariableModel": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The variable's name.",
            "nullable": true,
            "example": "StartDate"
          },
          "FieldType": {
            "type": "integer",
            "description": "The variable's data type.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "How the default value is sourced.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValue": {
            "type": "string",
            "description": "The default value applied to the variable, interpreted per DefaultValueType.",
            "nullable": true,
            "example": "2024-01-01"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for the variable.",
            "nullable": true
          },
          "AllowMultiple": {
            "type": "boolean",
            "description": "Whether the variable accepts multiple values.",
            "nullable": true
          },
          "DisplayAsList": {
            "type": "boolean",
            "description": "Whether the variable is presented to the user as a selectable list.",
            "nullable": true
          },
          "LookupEntityId": {
            "type": "string",
            "description": "The entity used to look up selectable values for the variable.",
            "nullable": true
          },
          "LookupValueFieldId": {
            "type": "string",
            "description": "The lookup field whose value is stored when a lookup option is selected.",
            "nullable": true
          },
          "LookupDisplayFieldId": {
            "type": "string",
            "description": "The lookup field shown to the user when selecting an option.",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The label shown to the user for the variable.",
            "nullable": true,
            "example": "Start date"
          },
          "Fixed": {
            "type": "boolean",
            "description": "Whether the variable's value is fixed and cannot be changed by the user.",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the variable is hidden from the user.",
            "nullable": true
          },
          "ListItemFieldId": {
            "type": "string",
            "description": "The field that supplies the variable's list item values.",
            "nullable": true
          },
          "Tooltip": {
            "type": "string",
            "description": "Help text shown to the user for the variable.",
            "nullable": true,
            "example": "Enter the date the report should begin."
          },
          "Script": {
            "type": "string",
            "description": "The expression evaluated to produce the value of a calculated variable.",
            "nullable": true,
            "example": "[OrderDate] + 30"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "The number of decimal places displayed for numeric variables.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an entity variable. Only supplied properties are changed."
      },
      "PatchFavoriteColumnRequest": {
        "type": "object",
        "properties": {
          "ColumnNumber": {
            "type": "integer",
            "description": "The column's position in the list, left to right.",
            "format": "int32",
            "nullable": true
          },
          "ColumnWidth": {
            "type": "integer",
            "description": "The column's display width in pixels.",
            "format": "int32",
            "nullable": true
          },
          "SortNumber": {
            "type": "integer",
            "description": "The column's position in the sort order, lowest first.",
            "format": "int32",
            "nullable": true
          },
          "SortDirection": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          },
          "GroupNumber": {
            "type": "integer",
            "description": "The column's position in the grouping order, lowest first.",
            "format": "int32",
            "nullable": true
          },
          "GroupDirection": {
            "type": "integer",
            "description": "Integer code for the grouping direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the column: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true
          },
          "ConversionType": {
            "type": "integer",
            "description": "Integer code for the value conversion applied to the column, such as a currency or unit conversion. Null when no conversion is applied.",
            "format": "int32",
            "nullable": true
          },
          "PivotValueNumber": {
            "type": "integer",
            "description": "The column's position among the value fields in a pivot layout.",
            "format": "int32",
            "nullable": true
          },
          "PivotColumnNumber": {
            "type": "integer",
            "description": "The column's position among the column fields in a pivot layout.",
            "format": "int32",
            "nullable": true
          },
          "PivotRowNumber": {
            "type": "integer",
            "description": "The column's position among the row fields in a pivot layout.",
            "format": "int32",
            "nullable": true
          },
          "DateFormat": {
            "type": "integer",
            "description": "Integer code for the display granularity applied to a date column: 1 = Full date, 2 = Day of month, 3 = Day of week, 4 = Month, 5 = Year, 6 = Month and year, 7 = Fiscal period, 8 = Fiscal year, 9 = Fiscal period and year.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a favorite column's display settings (order, width, sort, group, summary, pivot and date format)."
      },
      "PatchFavoriteRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name. Max 200 characters. Omit to leave unchanged.",
            "nullable": true,
            "example": "Open Orders (2026)"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "New maximum record count. Cannot exceed 100000. Omit to leave unchanged.",
            "format": "int32",
            "nullable": true,
            "example": 1000
          },
          "ViewType": {
            "$ref": "#/components/schemas/ViewType"
          },
          "ChartSettings": {
            "$ref": "#/components/schemas/ChartSettingsRequest"
          },
          "TextSettings": {
            "$ref": "#/components/schemas/TextSettingsRequest"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing favorite. Only supplied properties are changed."
      },
      "PatchFavoriteRestrictionRequest": {
        "type": "object",
        "properties": {
          "SubqueryId": {
            "type": "string",
            "description": "The subquery the restriction targets, when filtering on a related list.",
            "format": "uuid",
            "nullable": true
          },
          "FieldId": {
            "type": "string",
            "description": "The entity field the restriction filters on.",
            "format": "uuid",
            "nullable": true
          },
          "Operator": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Conjunctive": {
            "type": "integer",
            "description": "Integer code for how this restriction joins the previous one: 0 = None, 1 = And, 2 = Or.",
            "format": "int32",
            "nullable": true
          },
          "RestrictionNumber": {
            "type": "integer",
            "description": "Ordinal position of the restriction within the favorite's filter.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a favorite restriction (filter)."
      },
      "PatchFavoriteRestrictionValueRequest": {
        "type": "object",
        "properties": {
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.Patch.PatchFavoriteRestrictionValueRequest.ValueType is Constant.",
            "nullable": true
          },
          "DateValueType": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.Patch.PatchFavoriteRestrictionValueRequest.ValueType is a date value.",
            "format": "int32",
            "nullable": true
          },
          "FieldId": {
            "type": "string",
            "description": "The field whose value is used, when Popdock.WebApi.Models.Request.Patch.PatchFavoriteRestrictionValueRequest.ValueType is Field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a favorite restriction value."
      },
      "PatchHomeLayoutItem": {
        "type": "object",
        "properties": {
          "Title": {
            "type": "string",
            "description": "The tile's display title.",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "Identifier of the favorite shown by the tile, when the tile is bound to a favorite.",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "Identifier of the company the tile is scoped to, when set.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a home page layout tile (item)."
      },
      "PatchLookupRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New display name for the lookup.",
            "nullable": true,
            "example": "Customer Display Name"
          },
          "Description": {
            "type": "string",
            "description": "New description for the lookup.",
            "nullable": true,
            "example": "Resolves a customer id to its display name."
          },
          "EntityId": {
            "type": "string",
            "description": "Change the source entity (list/table) the lookup reads from.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "InputFieldId": {
            "type": "string",
            "description": "Change the field whose value is matched against (the lookup key).",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "OutputFieldId": {
            "type": "string",
            "description": "Change the field whose value is returned for a matched row (the lookup result).",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "CompanyId": {
            "type": "string",
            "description": "Change the company the lookup is scoped to.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing lookup. Only supplied properties are changed."
      },
      "PatchLookupRestrictionRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The field that this restriction is applied to.",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a lookup restriction."
      },
      "PatchMcpPromptMessageRestrictionRequest": {
        "type": "object",
        "properties": {
          "McpPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter that the restriction is evaluated against.",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing MCP prompt message restriction. Only supplied properties are changed."
      },
      "PatchMcpPromptMessageRestrictionValueRequest": {
        "type": "object",
        "properties": {
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against. Used when the value type is Constant.",
            "nullable": true
          },
          "McpPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter whose value is compared against. Used when the value type is Parameter.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing MCP prompt message restriction value. Only supplied properties are changed."
      },
      "PatchMcpPromptParameterValidationRequest": {
        "type": "object",
        "properties": {
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value must match. Used when the validation type is Regex.",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message shown when the value fails this validation.",
            "nullable": true
          },
          "MaxValue": {
            "type": "integer",
            "description": "The maximum allowed value or length. Used when the validation type is Max value or Max length.",
            "format": "int32",
            "nullable": true
          },
          "MinValue": {
            "type": "integer",
            "description": "The minimum allowed value or length. Used when the validation type is Min value or Min length.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing MCP prompt parameter validation rule. Only supplied properties are changed."
      },
      "PatchMcpPromptRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New name for the prompt.",
            "nullable": true,
            "example": "summarize_open_orders"
          },
          "Title": {
            "type": "string",
            "description": "New human-readable display title for the prompt. This is what UIs show (Title falls back to Name when unset).",
            "nullable": true,
            "example": "Summarize open orders"
          },
          "Description": {
            "type": "string",
            "description": "New description for the prompt.",
            "nullable": true,
            "example": "Summarizes a customer's open and overdue orders."
          },
          "Status": {
            "$ref": "#/components/schemas/McpPromptStatus"
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing MCP prompt. Only supplied properties are changed."
      },
      "PatchMcpToolParameterRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The parameter's name.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field this parameter filters, when bound to a field.",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "Identifier of the entity variable this parameter sets, when bound to a variable.",
            "format": "uuid",
            "nullable": true
          },
          "LookupId": {
            "type": "string",
            "description": "Identifier of the lookup this parameter uses, when bound to a lookup.",
            "format": "uuid",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the parameter shown to the AI client.",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied by the client.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an MCP tool parameter."
      },
      "PatchMcpToolParameterValidationRequest": {
        "type": "object",
        "properties": {
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value is matched against, for a regex rule.",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message returned when the value fails this rule.",
            "nullable": true
          },
          "MaxValue": {
            "type": "integer",
            "description": "The maximum allowed value or length, for a maximum/range rule.",
            "format": "int32",
            "nullable": true
          },
          "MinValue": {
            "type": "integer",
            "description": "The minimum allowed value or length, for a minimum/range rule.",
            "format": "int32",
            "nullable": true
          },
          "MaxDate": {
            "type": "string",
            "description": "The maximum allowed date, for a maximum-date rule.",
            "format": "date-time",
            "nullable": true
          },
          "MinDate": {
            "type": "string",
            "description": "The minimum allowed date, for a minimum-date rule.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a validation rule on an MCP tool parameter."
      },
      "PatchMcpToolRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New tool name (the identifier AI clients call it by).",
            "nullable": true,
            "example": "list_sales_orders"
          },
          "Description": {
            "type": "string",
            "description": "New description of what the tool does.",
            "nullable": true,
            "example": "Returns sales orders with optional customer and date filters."
          },
          "Title": {
            "type": "string",
            "description": "New human-friendly title shown for the tool.",
            "nullable": true,
            "example": "List Sales Orders"
          },
          "ConnectorId": {
            "type": "string",
            "description": "Change the connector backing the tool.",
            "format": "uuid",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "Change the entity the tool queries.",
            "format": "uuid",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "Change the favorite the tool returns.",
            "format": "uuid",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Change the maximum number of records the tool returns.",
            "format": "int32",
            "nullable": true,
            "example": 1000
          },
          "LookupId": {
            "type": "string",
            "description": "Change the lookup the tool resolves, when backed by a lookup.",
            "format": "uuid",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "Change the action the tool runs, when backed by an action.",
            "format": "uuid",
            "nullable": true
          },
          "WorkflowId": {
            "type": "string",
            "description": "Change the workflow the tool runs, when backed by a workflow.",
            "format": "uuid",
            "nullable": true
          },
          "ResponseType": {
            "$ref": "#/components/schemas/McpToolResponseType"
          },
          "ResponseText": {
            "type": "string",
            "description": "Change the static response text returned, when the tool returns fixed text.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Change the locale used to format the tool's output.",
            "nullable": true,
            "example": "en-US"
          },
          "DefaultCompanyId": {
            "type": "string",
            "description": "Change the company used by default when the tool queries data.",
            "format": "uuid",
            "nullable": true
          },
          "FileFieldId": {
            "type": "string",
            "description": "Change the field that supplies the file, for file tools.",
            "format": "uuid",
            "nullable": true
          },
          "ResponseFilename": {
            "type": "string",
            "description": "Change the filename used for the file the tool returns.",
            "nullable": true
          },
          "ResponseWorksheetName": {
            "type": "string",
            "description": "Change the worksheet name used for the spreadsheet the tool returns.",
            "nullable": true
          },
          "Status": {
            "$ref": "#/components/schemas/McpToolStatus"
          },
          "CodeModeOnly": {
            "type": "boolean",
            "description": "When true, the tool is reachable only from within the server's code tool (run_code): it is\r\n            hidden from the tools list and a direct call to it is rejected.",
            "nullable": true,
            "example": false
          },
          "ConnectorMessagingTemplateId": {
            "type": "string",
            "description": "Change the connector messaging template the tool uses.",
            "format": "uuid",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "Change the message body sent by the tool.",
            "nullable": true
          },
          "MessageSubject": {
            "type": "string",
            "description": "Change the subject of the message sent by the tool.",
            "nullable": true
          },
          "MessageType": {
            "type": "integer",
            "description": "The message type.",
            "format": "int32",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Change the number of decimal places used to format the script's numeric result.",
            "format": "int32",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "Change the script the tool runs, for run-script tools.",
            "nullable": true
          },
          "ThirdPartyMcpToolId": {
            "type": "string",
            "description": "Change the third-party MCP tool this tool proxies, for third-party tools.",
            "format": "uuid",
            "nullable": true
          },
          "Action": {
            "type": "string",
            "description": "Change the action the third-party MCP tool invokes.",
            "nullable": true
          },
          "ZipFileType": {
            "$ref": "#/components/schemas/McpToolZipType"
          },
          "ZipFilename": {
            "type": "string",
            "description": "Change the filename used for the zip archive of the output files.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing MCP tool. Only supplied properties are changed."
      },
      "PatchMcpToolResponseFieldRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The response field's name as returned to the client.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the response field shown to the AI client.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing MCP tool response field. Only supplied properties are changed."
      },
      "PatchMcpToolRestrictionRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the restriction filters on.",
            "format": "uuid"
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields to update an MCP tool restriction."
      },
      "PatchMeRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The user's display name.",
            "nullable": true
          },
          "UsePaging": {
            "type": "boolean",
            "description": "Whether list results are paged for this user.",
            "nullable": true
          },
          "PageSize": {
            "type": "integer",
            "description": "The number of records shown per page.",
            "format": "int32",
            "nullable": true
          },
          "Theme": {
            "type": "string",
            "description": "The user's selected UI theme.",
            "nullable": true
          },
          "TimeZone": {
            "type": "string",
            "description": "The user's time zone identifier.",
            "nullable": true
          },
          "Disable_Notifications": {
            "type": "boolean",
            "description": "Whether notifications are disabled for this user.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "The user's locale identifier.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update the current user's profile and preferences."
      },
      "PatchScheduledJobRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The scheduled job's display name.",
            "nullable": true
          },
          "JobType": {
            "type": "integer",
            "description": "Integer code for the job type: 1 = Send email, 2 = Export.",
            "format": "int32",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the entity the job runs against.",
            "format": "uuid",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "Identifier of the saved favorite (query/view) the job runs, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the companies the job runs against.",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "Identifier of the action the job runs, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "DestinationConnectorId": {
            "type": "string",
            "description": "Identifier of the connector files are exported to, for export jobs.",
            "format": "uuid",
            "nullable": true
          },
          "ScheduleType": {
            "type": "integer",
            "description": "Integer code for the recurrence pattern: 1 = Every day, 2 = Every N days, 3 = Specific days of the week, 4 = Specific days of the month, 5 = Last day of the month, 6 = Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true
          },
          "Days": {
            "type": "integer",
            "description": "The interval in days, used when the schedule type is Every N days.",
            "format": "int32",
            "nullable": true
          },
          "Ordinal": {
            "type": "integer",
            "description": "The ordinal week of the month (for example 1 for first, 2 for second), used when the schedule type is Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true
          },
          "DayOfWeek": {
            "type": "integer",
            "description": "Day of the week as an integer where 0 = Sunday through 6 = Saturday, used when the schedule type is Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true
          },
          "Time": {
            "type": "string",
            "description": "Time of day to run, in \"HH:mm\" 24-hour format.",
            "nullable": true
          },
          "Email": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Email addresses the job's output is sent to, for email jobs.",
            "nullable": true
          },
          "Subject": {
            "type": "string",
            "description": "Subject line of the email, for email jobs.",
            "nullable": true
          },
          "Body": {
            "type": "string",
            "description": "Body content of the email, for email jobs.",
            "nullable": true
          },
          "Format": {
            "type": "integer",
            "description": "Integer code for the output file format, used by export jobs: 1 = Excel, 2 = CSV.",
            "format": "int32",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Day selections whose meaning depends on ScheduleType (days of week / days of month).",
            "nullable": true
          },
          "Filename": {
            "type": "string",
            "description": "Name of the generated output file.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "Destination folder path the file is written to, for export jobs.",
            "nullable": true
          },
          "CreateIfNotExists": {
            "type": "boolean",
            "description": "Whether the destination path is created if it does not already exist.",
            "nullable": true
          },
          "FileNameConflictBehavior": {
            "type": "integer",
            "description": "Integer code for how name clashes are handled when writing the file: 0 = Fail, 1 = Rename, 2 = Replace.",
            "format": "int32",
            "nullable": true
          },
          "Timezone": {
            "type": "string",
            "description": "IANA time zone the run time is interpreted in.",
            "nullable": true
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the job's status: 1 = Active, 2 = Inactive.",
            "format": "int32",
            "nullable": true
          },
          "ScheduleChanged": {
            "type": "boolean",
            "description": "True when any field affecting the schedule was supplied, so NextRunAt must be recomputed.",
            "readOnly": true
          },
          "Hour": {
            "type": "integer",
            "description": "Hour of the day the job runs, in 24-hour time (0 to 23), parsed from Time.",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "Minute": {
            "type": "integer",
            "description": "Minute of the hour the job runs (0 to 59), parsed from Time.",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a scheduled job."
      },
      "PatchWidgetAiAttachmentRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "The entity the attachment draws its data from.",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The company the attachment is scoped to.",
            "format": "uuid",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records the attachment returns.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a widget AI attachment."
      },
      "PatchWidgetFormRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The widget form's display name.",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The title shown on the widget form.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the widget form.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the form's content.",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "The action submitted when the form is completed.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing widget form. Only supplied properties are changed."
      },
      "PatchWidgetGroupRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The widget group's display name.",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The title shown on the widget group.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the widget group.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the widget group's content.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing widget group. Only supplied properties are changed."
      },
      "PatchWidgetOptionRequest": {
        "type": "object",
        "properties": {
          "ShowExport": {
            "type": "boolean",
            "description": "Whether the export control is shown on the widget.",
            "nullable": true
          },
          "ShowFilter": {
            "type": "boolean",
            "description": "Whether the filter control is shown on the widget.",
            "nullable": true
          },
          "AllowGrouping": {
            "type": "boolean",
            "description": "Whether users are allowed to group records in the widget.",
            "nullable": true
          },
          "ShowTotals": {
            "type": "boolean",
            "description": "Whether column totals are shown on the widget.",
            "nullable": true
          },
          "ShowColumns": {
            "type": "boolean",
            "description": "Whether the column chooser control is shown on the widget.",
            "nullable": true
          },
          "ShowRefresh": {
            "type": "boolean",
            "description": "Whether the refresh control is shown on the widget.",
            "nullable": true
          },
          "ShowTitle": {
            "type": "boolean",
            "description": "Whether the widget title is shown.",
            "nullable": true
          },
          "ShowSearch": {
            "type": "boolean",
            "description": "Whether the search control is shown on the widget.",
            "nullable": true
          },
          "ShowActions": {
            "type": "boolean",
            "description": "Whether record actions are shown on the widget.",
            "nullable": true
          },
          "ShowDetails": {
            "type": "boolean",
            "description": "Whether the record detail view is shown on the widget.",
            "nullable": true
          },
          "ShowSettings": {
            "type": "boolean",
            "description": "Whether the settings control is shown on the widget.",
            "nullable": true
          },
          "ShowRecordCount": {
            "type": "boolean",
            "description": "Whether the record count is shown on the widget.",
            "nullable": true
          },
          "ShowFilterDescription": {
            "type": "boolean",
            "description": "Whether the description of the active filter is shown on the widget.",
            "nullable": true
          },
          "ShowPages": {
            "type": "boolean",
            "description": "Whether paging controls are shown on the widget.",
            "nullable": true
          },
          "ChangeViewType": {
            "type": "boolean",
            "description": "Whether users are allowed to change the view type of the widget.",
            "nullable": true
          },
          "ShowFavorites": {
            "type": "boolean",
            "description": "Whether saved favorites are shown on the widget.",
            "nullable": true
          },
          "AddFavorites": {
            "type": "boolean",
            "description": "Whether users are allowed to add favorites in the widget.",
            "nullable": true
          },
          "EditFavorites": {
            "type": "boolean",
            "description": "Whether users are allowed to edit favorites in the widget.",
            "nullable": true
          },
          "AllowCollapse": {
            "type": "boolean",
            "description": "Whether the widget can be collapsed.",
            "nullable": true
          },
          "DefaultCollapse": {
            "type": "boolean",
            "description": "Whether the widget is collapsed by default.",
            "nullable": true
          },
          "ShowTabLabel": {
            "type": "boolean",
            "description": "Whether the tab label is shown on the widget.",
            "nullable": true
          },
          "Sidebar": {
            "type": "boolean",
            "description": "Whether the widget is displayed as a sidebar.",
            "nullable": true
          },
          "EagerLoad": {
            "type": "boolean",
            "description": "Whether the widget data is eagerly loaded when the widget is rendered.",
            "nullable": true
          },
          "DisplayEmptyFields": {
            "type": "boolean",
            "description": "Whether fields with no value are displayed on the widget.",
            "nullable": true
          },
          "ShowCompanies": {
            "type": "boolean",
            "description": "Whether the company selector is shown on the widget.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating a widget's display and behavior options. Only supplied properties are changed."
      },
      "PatchWidgetRequest": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "New internal name for the widget.",
            "nullable": true,
            "example": "open-orders"
          },
          "Title": {
            "type": "string",
            "description": "New title shown on the widget.",
            "nullable": true,
            "example": "Open Sales Orders"
          },
          "Description": {
            "type": "string",
            "description": "New description of the widget.",
            "nullable": true
          },
          "Theme": {
            "type": "string",
            "description": "Visual theme applied to the widget (e.g. light/dark).",
            "nullable": true,
            "example": "dark"
          },
          "ConnectorId": {
            "type": "string",
            "description": "Connector backing the widget, when it shows connector data.",
            "format": "uuid",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "Entity (list/table) the widget shows.",
            "format": "uuid",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "Favorite the widget shows, when backed by a saved favorite.",
            "format": "uuid",
            "nullable": true
          },
          "DefaultItemId": {
            "type": "string",
            "description": "The widget item shown by default.",
            "format": "uuid",
            "nullable": true
          },
          "UrlItemId": {
            "type": "string",
            "description": "The widget item used for the URL action.",
            "format": "uuid",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "When true, the widget is hidden.",
            "nullable": true,
            "example": false
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records shown in the widget.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "SortFieldId": {
            "type": "string",
            "description": "Field used to sort the widget's records.",
            "format": "uuid",
            "nullable": true
          },
          "SortDirection": {
            "$ref": "#/components/schemas/SortDirection"
          },
          "ActionId": {
            "type": "string",
            "description": "Action invoked from the widget.",
            "format": "uuid",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the widget's content.",
            "nullable": true,
            "example": "en-US"
          },
          "CompanyId": {
            "type": "string",
            "description": "Company used by default for the widget's data.",
            "format": "uuid",
            "nullable": true
          },
          "Height": {
            "type": "integer",
            "description": "Widget height.",
            "format": "int32",
            "nullable": true,
            "example": 400
          },
          "Width": {
            "type": "integer",
            "description": "Widget width.",
            "format": "int32",
            "nullable": true,
            "example": 600
          },
          "HeightType": {
            "$ref": "#/components/schemas/WidgetSizeType"
          },
          "WidthType": {
            "$ref": "#/components/schemas/WidgetSizeType"
          },
          "Active": {
            "type": "boolean",
            "description": "When true, the widget is active.",
            "nullable": true,
            "example": true
          },
          "AiConnectorId": {
            "type": "string",
            "description": "AI connector used for AI widgets.",
            "format": "uuid",
            "nullable": true
          },
          "AiModelId": {
            "type": "string",
            "description": "AI model used for AI widgets.",
            "format": "uuid",
            "nullable": true
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "Tone modifier applied to AI widget responses.",
            "format": "uuid",
            "nullable": true
          },
          "AiPrompt": {
            "type": "string",
            "description": "Prompt text for AI widgets.",
            "nullable": true
          },
          "AiType": {
            "$ref": "#/components/schemas/WidgetAiType"
          },
          "FileFieldId": {
            "type": "string",
            "description": "Field holding the file content for a file widget.",
            "format": "uuid",
            "nullable": true
          },
          "FileNameFieldId": {
            "type": "string",
            "description": "Field holding the file name for a file widget.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for updating an existing widget. Only supplied properties are changed."
      },
      "PopdockShared.Action.ActionResponse": {
        "type": "object",
        "properties": {
          "Status": {
            "type": "string",
            "nullable": true
          },
          "Error": {
            "type": "string",
            "nullable": true
          },
          "ErrorDescription": {
            "type": "string",
            "nullable": true
          },
          "Data": {
            "type": "string",
            "nullable": true
          },
          "RecordId": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PostActionRequest": {
        "required": [
          "ConnectorId",
          "Name",
          "ShowType",
          "TaskType"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector this action belongs to. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The action's display name. Required. Required when creating (POST).",
            "nullable": true,
            "example": "Create Ticket"
          },
          "Description": {
            "type": "string",
            "description": "Optional description of what the action does.",
            "nullable": true,
            "example": "Creates a support ticket in the source system."
          },
          "TaskType": {
            "$ref": "#/components/schemas/ActionTaskType"
          },
          "ShowType": {
            "$ref": "#/components/schemas/ActionShowType"
          },
          "ConfirmationPrompt": {
            "type": "string",
            "description": "Confirmation prompt shown before the action runs.",
            "nullable": true,
            "example": "Create this ticket?"
          },
          "SubmitButtonLabel": {
            "type": "string",
            "description": "Label for the submit/confirm button.",
            "nullable": true,
            "example": "Create"
          },
          "CancelButtonLabel": {
            "type": "string",
            "description": "Label for the cancel button.",
            "nullable": true,
            "example": "Cancel"
          },
          "ConnectorActionConnectorId": {
            "type": "string",
            "description": "The connector that runs the action, when TaskType is a connector action.",
            "format": "uuid",
            "nullable": true
          },
          "ConnectorActionGroupId": {
            "type": "string",
            "description": "The connector group for the action, when TaskType is a connector action.",
            "format": "uuid",
            "nullable": true
          },
          "ConnectorActionEntityId": {
            "type": "string",
            "description": "The connector entity the action targets, when TaskType is a connector action.",
            "format": "uuid",
            "nullable": true
          },
          "ConnectorActionAction": {
            "type": "string",
            "description": "Name of the connector action or stored procedure to run. Used for connector action and stored procedure task types.",
            "nullable": true
          },
          "Endpoint": {
            "type": "string",
            "description": "Endpoint path called by a REST action (relative to the connector's base URL).",
            "nullable": true,
            "example": "/tickets"
          },
          "Method": {
            "$ref": "#/components/schemas/RequestMethod"
          },
          "Body": {
            "type": "string",
            "description": "Request body template for a REST action. May contain {placeholders} for parameters.",
            "nullable": true,
            "example": "{ \"subject\": \"{subject}\", \"priority\": \"{priority}\" }"
          },
          "BodyType": {
            "$ref": "#/components/schemas/BodyType"
          },
          "RemoveEmptyBodyObjects": {
            "type": "boolean",
            "description": "When true, empty objects are removed from the request body before sending.",
            "nullable": true,
            "example": true
          },
          "RemoveEmptyBodyProperties": {
            "type": "boolean",
            "description": "When true, empty properties are removed from the request body before sending.",
            "nullable": true,
            "example": true
          },
          "WorkflowId": {
            "type": "string",
            "description": "Workflow run by the action, when backed by a workflow.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new action. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an action — a callable operation (e.g. a REST call or workflow) on a connector."
      },
      "PostAiPromptEntityAttachmentRequest": {
        "required": [
          "AttachmentType",
          "CustomEntityId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "CustomEntityId": {
            "type": "string",
            "description": "The custom AI prompt entity this attachment belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the attachment.",
            "nullable": true
          },
          "AttachmentType": {
            "type": "integer",
            "description": "Integer code for the attachment type: 1 = List, 2 = File, 3 = Folder, 4 = Field, 5 = Favorite. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "ConnectorId": {
            "type": "string",
            "description": "The connector the attachment draws data from. Populated only for connector-based attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "The entity (list) the attachment draws data from. Populated only for list attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "The saved favorite the attachment draws data from. Populated only for favorite attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the attachment draws data from. Populated only for field attachment types.",
            "format": "uuid",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "The file or folder path for file and folder attachment types.",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records included from the attachment source.",
            "format": "int32",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "An optional message included with the attachment when passed to the AI model.",
            "nullable": true
          },
          "ChunkSize": {
            "type": "integer",
            "description": "The number of records per chunk when the attachment data is split for the AI model.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an AI prompt entity attachment."
      },
      "PostAiPromptEntityAttachmentSortRequest": {
        "required": [
          "CustomEntityAiPromptAttachmentId",
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The AI prompt attachment this sort belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the attachment results are sorted by. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Direction": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a sort on an AI prompt entity attachment."
      },
      "PostAiPromptEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "AiConnectorId": {
            "type": "string",
            "description": "The connector providing the AI model used to generate the prompt response.",
            "format": "uuid",
            "nullable": true
          },
          "AiModelId": {
            "type": "string",
            "description": "The AI model used to generate the prompt response.",
            "format": "uuid",
            "nullable": true
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "The tone modifier applied to shape the AI response style.",
            "format": "uuid",
            "nullable": true
          },
          "AiPrompt": {
            "type": "string",
            "description": "The prompt text sent to the AI model.",
            "nullable": true,
            "example": "Summarize the attached invoices and flag any past due balances."
          },
          "Attachments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostAiPromptEntityAttachmentRequest"
            },
            "description": "The data attachments supplied to the AI prompt as context, created alongside the entity.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an AI prompt entity."
      },
      "PostBrowserExtensionModelRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension this model assignment belongs to.",
            "format": "uuid"
          },
          "AiModelId": {
            "type": "string",
            "description": "The identifier of the connector AI model.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension model assignment."
      },
      "PostBrowserExtensionPageAttachmentFieldRequest": {
        "required": [
          "BrowserExtensionPageFieldIds"
        ],
        "type": "object",
        "properties": {
          "BrowserExtensionPageAttachmentId": {
            "type": "string",
            "description": "The attachment these fields belong to.",
            "format": "uuid"
          },
          "BrowserExtensionPageFieldIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The page fields to include in the attachment. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating browser extension page attachment fields."
      },
      "PostBrowserExtensionPageAttachmentRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The page this attachment belongs to.",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension page attachment."
      },
      "PostBrowserExtensionPageFieldRequest": {
        "required": [
          "Name",
          "Selector"
        ],
        "type": "object",
        "properties": {
          "BrowserExtensionPageId": {
            "type": "string",
            "description": "The page this field belongs to.",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "description": "The field's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Selector": {
            "type": "string",
            "description": "The selector used to read this field's value from the page. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying the kind of selector used. No named code set is defined; treat the value as opaque.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension page field."
      },
      "PostBrowserExtensionPageParameterRequest": {
        "type": "object",
        "properties": {
          "ParameterName": {
            "type": "string",
            "description": "Name of the parameter being supplied to the page.",
            "nullable": true
          },
          "SelectorType": {
            "type": "integer",
            "description": "Integer code identifying how the source value is located on the host page.",
            "format": "int32"
          },
          "SourceKey": {
            "type": "string",
            "description": "Selector or key used to read the parameter value from the host page.",
            "nullable": true
          },
          "browserPageId": {
            "type": "string",
            "description": "The page this parameter mapping belongs to.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension page parameter mapping."
      },
      "PostBrowserExtensionPageRequest": {
        "required": [
          "Path"
        ],
        "type": "object",
        "properties": {
          "BrowserExtensionUrlId": {
            "type": "string",
            "description": "The URL this page belongs to.",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "description": "The page's display name.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "The URL path that identifies this page. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "PageIdentificationType": {
            "type": "integer",
            "description": "Integer code identifying how the page is matched. No named code set is defined; treat the value as opaque.",
            "format": "int32"
          },
          "IframeSelector": {
            "type": "string",
            "description": "The selector for the iframe the extension targets on this page.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension page."
      },
      "PostBrowserExtensionPromptAttachmentRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionPromptId": {
            "type": "string",
            "description": "The browser extension prompt the attachment is linked to.",
            "format": "uuid"
          },
          "BrowserExtensionPageAttachmentId": {
            "type": "string",
            "description": "The page attachment being linked. Its name comes from the page attachment.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Fields for linking a page attachment to a browser extension prompt."
      },
      "PostBrowserExtensionPromptGroupRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension this prompt group belongs to.",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "description": "The prompt group's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "ParentGroupId": {
            "type": "string",
            "description": "The identifier of the parent group, for nested groups.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension prompt group."
      },
      "PostBrowserExtensionPromptParameterRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionPromptId": {
            "type": "string",
            "description": "The browser extension prompt this parameter belongs to.",
            "format": "uuid"
          },
          "McpPromptParameterId": {
            "type": "string",
            "description": "The MCP prompt parameter being bound. Its name and required flag come from the MCP prompt.",
            "format": "uuid"
          },
          "Type": {
            "type": "integer",
            "description": "How the parameter value is supplied (e.g. page field or user input).",
            "format": "int32"
          },
          "BrowserExtensionPageFieldId": {
            "type": "string",
            "description": "The page field that supplies the value, when Type is page field.",
            "format": "uuid",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "A constant/default value for the parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for binding an MCP prompt parameter to a browser extension prompt."
      },
      "PostBrowserExtensionPromptRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension this prompt belongs to.",
            "format": "uuid"
          },
          "McpPromptId": {
            "type": "string",
            "description": "The identifier of the underlying MCP prompt.",
            "format": "uuid"
          },
          "BrowserExtensionPromptGroupId": {
            "type": "string",
            "description": "The prompt group this prompt belongs to, if any.",
            "format": "uuid",
            "nullable": true
          },
          "SlashCommand": {
            "type": "string",
            "description": "The slash command that triggers this prompt.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension prompt."
      },
      "PostBrowserExtensionRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The browser extension's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the browser extension.",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Integer code identifying the browser extension type.",
            "format": "int32"
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector backing the browser extension, when one is configured.",
            "format": "uuid",
            "nullable": true
          },
          "WidgetId": {
            "type": "string",
            "description": "Identifier of the widget rendered by the browser extension, when one is configured.",
            "format": "uuid",
            "nullable": true
          },
          "Url": {
            "type": "string",
            "description": "The host URL the extension runs on.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "The URL path that identifies the page.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension."
      },
      "PostBrowserExtensionToolRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension this tool belongs to.",
            "format": "uuid"
          },
          "McpToolId": {
            "type": "string",
            "description": "The identifier of the underlying MCP tool.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension tool."
      },
      "PostBrowserExtensionUrlRequest": {
        "required": [
          "Url"
        ],
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "The browser extension this URL belongs to.",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "description": "The display name for this URL configuration.",
            "nullable": true
          },
          "Url": {
            "type": "string",
            "description": "The host URL the extension runs on. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a browser extension URL."
      },
      "PostCompanyRequest": {
        "required": [
          "ConnectorId",
          "DatabaseName",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector this company belongs to. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The company's display name. Required. Required when creating (POST).",
            "nullable": true,
            "example": "Fabrikam, Inc."
          },
          "DatabaseName": {
            "type": "string",
            "description": "The underlying database/company identifier in the source system. Required when creating (POST).",
            "nullable": true,
            "example": "FABRIKAM"
          },
          "ParentCompanyId": {
            "type": "string",
            "description": "Parent company, when creating a child company under an existing one.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a company to a connector."
      },
      "PostComparisonEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "FromEntityId": {
            "type": "string",
            "description": "The source entity being compared from.",
            "format": "uuid"
          },
          "ToEntityId": {
            "type": "string",
            "description": "The target entity being compared to.",
            "format": "uuid"
          },
          "ComparisonMethod": {
            "$ref": "#/components/schemas/ComparisonMethod"
          },
          "BaseCompanyId": {
            "type": "string",
            "description": "The company whose records supply the base side of the comparison.",
            "format": "uuid",
            "nullable": true
          },
          "CompareCompanyId": {
            "type": "string",
            "description": "The company whose records supply the compare side of the comparison.",
            "format": "uuid",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a comparison entity."
      },
      "PostConnectorAiToolRequest": {
        "required": [
          "ConnectorId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector this AI tool belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/ConnectorAiToolType"
          },
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool definition exposed to the AI model. Set when the tool references an MCP tool.",
            "format": "uuid",
            "nullable": true
          },
          "PermissionType": {
            "$ref": "#/components/schemas/McpToolPermissionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a connector AI tool."
      },
      "PostConnectorRequest": {
        "type": "object",
        "properties": {
          "ConnectorType": {
            "type": "integer",
            "description": "Integer code identifying the connector's data source type — the kind of system it connects to.",
            "format": "int32",
            "nullable": true
          },
          "ConnectorSetupId": {
            "type": "string",
            "description": "Identifier of the connector setup (the template that defines this connector's type and the data it exposes).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The connector's display name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a connector."
      },
      "PostEndpointCustomHeaderRequest": {
        "type": "object",
        "properties": {
          "Key": {
            "type": "string",
            "description": "The HTTP header name.",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The HTTP header value.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a custom response header on an endpoint."
      },
      "PostEndpointCustomResponseRequest": {
        "type": "object",
        "properties": {
          "Code": {
            "type": "integer",
            "description": "The HTTP status code returned by this custom response.",
            "format": "int32"
          },
          "Body": {
            "type": "string",
            "description": "The response body returned with this custom response.",
            "nullable": true
          },
          "Headers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostEndpointCustomHeaderRequest"
            },
            "description": "The custom HTTP headers returned with this response, created alongside the response.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a custom response returned by an endpoint."
      },
      "PostEndpointFieldRequest": {
        "required": [
          "EndpointId",
          "EntityFieldId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "EndpointId": {
            "type": "string",
            "description": "The endpoint this field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The underlying entity field exposed by this endpoint field. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The name the field is exposed as in the endpoint output. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an endpoint field."
      },
      "PostEndpointParameterRequest": {
        "required": [
          "EndpointId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EndpointId": {
            "type": "string",
            "description": "The endpoint this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The parameter's name as used in the endpoint request. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "FieldId": {
            "type": "string",
            "description": "The entity field this parameter maps to, when the parameter is backed by a field.",
            "format": "uuid",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied in the request.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "The path the parameter value is read from in the request.",
            "nullable": true
          },
          "FieldType": {
            "type": "integer",
            "description": "The data type of the parameter value.",
            "format": "int32",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The parameter type: 2 maps the parameter to a variable; any other value maps it to a field. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "VariableId": {
            "type": "string",
            "description": "The entity variable this parameter maps to, when the parameter is backed by a variable.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an endpoint parameter, bound to a field or a variable."
      },
      "PostEndpointRequest": {
        "required": [
          "EntityId",
          "Name",
          "Url"
        ],
        "type": "object",
        "properties": {
          "Url": {
            "type": "string",
            "description": "The endpoint's URL path. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "The entity the endpoint draws data from. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "The favorite (saved query configuration) the endpoint is based on.",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The company (organization unit) the endpoint is scoped to.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The endpoint's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The endpoint's description.",
            "nullable": true
          },
          "DefaultFormat": {
            "type": "string",
            "description": "The default response format returned by the endpoint.",
            "nullable": true
          },
          "SingleRecord": {
            "type": "boolean",
            "description": "Whether the endpoint returns only a single record.",
            "nullable": true
          },
          "SingleValue": {
            "type": "boolean",
            "description": "Whether the endpoint returns only a single value.",
            "nullable": true
          },
          "FieldName": {
            "type": "string",
            "description": "The name of the field the endpoint filters or returns when restricted to a single field.",
            "nullable": true
          },
          "FieldValue": {
            "type": "string",
            "description": "The value used to filter the endpoint when restricted to a single field value.",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records the endpoint returns.",
            "format": "int32",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "The locale applied to the endpoint's results.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostEndpointParameterRequest"
            },
            "description": "Optional parameters to create alongside the endpoint.",
            "nullable": true
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostEndpointFieldRequest"
            },
            "description": "Optional fields to create alongside the endpoint.",
            "nullable": true
          },
          "Sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostEndpointSortRequest"
            },
            "description": "Optional sort orders to create alongside the endpoint.",
            "nullable": true
          },
          "NoDataResponse": {
            "$ref": "#/components/schemas/PostEndpointCustomResponseRequest"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new endpoint. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an endpoint."
      },
      "PostEndpointSortRequest": {
        "required": [
          "EndpointId",
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "EndpointId": {
            "type": "string",
            "description": "The endpoint this sort belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field the endpoint results are sorted by. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Descending": {
            "type": "boolean",
            "description": "Whether the sort is in descending order; false or null sorts ascending.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an endpoint sort."
      },
      "PostEntityColorCodingRequest": {
        "required": [
          "AppliesTo",
          "EntityId"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity (list/table) this color coding belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "AppliesTo": {
            "type": "integer",
            "description": "Integer code for what the color coding applies to: 1 = Field, 2 = Row, 3 = Group, 4 = Duplicate field value. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "BackgroundColorType": {
            "type": "integer",
            "description": "Integer code for where the background color comes from.",
            "format": "int32",
            "nullable": true
          },
          "BackgroundColorId": {
            "type": "string",
            "description": "The identifier of the background color applied when the color coding matches.",
            "format": "uuid",
            "nullable": true
          },
          "TextColorType": {
            "type": "integer",
            "description": "Integer code for where the text color comes from.",
            "format": "int32",
            "nullable": true
          },
          "TextColorId": {
            "type": "string",
            "description": "The identifier of the text color applied when the color coding matches.",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field the color coding is applied to.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity color coding."
      },
      "PostEntityDetailAiFavoriteParameterRequest": {
        "required": [
          "EntityDetailAiFavoriteId",
          "FieldType",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The parameter's internal name, referenced from the prompt. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The parameter's display label shown to the user.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "Type": {
            "$ref": "#/components/schemas/DetailAiFavoriteParameterType"
          },
          "Script": {
            "type": "string",
            "description": "The calculation script used to compute the parameter's value, when it is a calculation.",
            "nullable": true
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places used when displaying a numeric parameter.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValueType": {
            "$ref": "#/components/schemas/DetailAiFavoriteParameterDefaultValueType"
          },
          "DefaultValueConstant": {
            "type": "string",
            "description": "The constant default value, used when the default value type is a constant.",
            "nullable": true
          },
          "DefaultValueDate": {
            "type": "integer",
            "description": "A relative-date default, used when the default value type is a date.",
            "format": "int32",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for this parameter.",
            "nullable": true
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the parameter's input field.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity detail AI favorite parameter."
      },
      "PostEntityDetailAiFavoriteRequest": {
        "required": [
          "EntityDetailId",
          "Name",
          "Prompt"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this AI favorite belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The AI favorite's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text sent to the AI when the favorite is run. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "The tone modifier applied to the AI response, when one is configured.",
            "format": "uuid",
            "nullable": true
          },
          "DataSources": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailAiFavoriteDataSourceRequest"
            },
            "description": "Optional data sources to link alongside the favorite. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-ai-favorite-data-source`; the first invalid data source fails the request.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailAiFavoriteParameterRequest"
            },
            "description": "Optional parameters to create alongside the favorite. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-ai-favorite-parameter`; the first invalid parameter fails the request.",
            "nullable": true
          },
          "Tools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailAiFavoriteToolRequest"
            },
            "description": "Optional tools to link alongside the favorite. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-ai-favorite-tool`; the first invalid tool fails the request.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity detail AI favorite."
      },
      "PostEntityDetailFilterRequest": {
        "required": [
          "EntityDetailId",
          "EntityFieldId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this filter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field to filter on. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The filter/restriction operator code. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity detail filter."
      },
      "PostEntityDetailItemRequest": {
        "required": [
          "DetailItemId",
          "EntityDetailId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this item belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "DetailItemId": {
            "type": "string",
            "description": "Identifier of the item included in the detail. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity detail item."
      },
      "PostEntityDetailRequest": {
        "required": [
          "EntityId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity this detail is attached to. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Type": {
            "$ref": "#/components/schemas/DetailType"
          },
          "Name": {
            "type": "string",
            "description": "Display name for the detail. Required when creating (POST).",
            "nullable": true,
            "example": "Summarize Order"
          },
          "Description": {
            "type": "string",
            "description": "Optional description shown for the detail.",
            "nullable": true,
            "example": "AI summary of the selected order."
          },
          "DisplayType": {
            "$ref": "#/components/schemas/DetailDisplayType"
          },
          "Url": {
            "type": "string",
            "description": "URL opened by the detail (for URL/embed panels). Supports field tokens like {FieldName}.",
            "nullable": true,
            "example": "https://example.com/customers/{CustomerId}"
          },
          "AiPrompt": {
            "type": "string",
            "description": "Prompt text sent to the AI model (for AI panels).",
            "nullable": true,
            "example": "Summarize this order, highlighting total value and any overdue items."
          },
          "AiConnectorId": {
            "type": "string",
            "description": "AI connector used to run the prompt.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "AiModelId": {
            "type": "string",
            "description": "AI model used to run the prompt.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "AI tone modifier applied to the prompt's output.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "AiPromptType": {
            "$ref": "#/components/schemas/DetailAiPromptType"
          },
          "AiAllowConversation": {
            "type": "boolean",
            "description": "When true, the user may continue the AI conversation after the initial response.",
            "nullable": true,
            "example": true
          },
          "AiShowInitialPrompt": {
            "type": "boolean",
            "description": "When true, the initial prompt is shown to the user.",
            "nullable": true,
            "example": true
          },
          "AiAllowToneChanges": {
            "type": "boolean",
            "description": "When true, the user may change the AI tone.",
            "nullable": true,
            "example": true
          },
          "DetailEntityId": {
            "type": "string",
            "description": "Related entity whose records the detail displays.",
            "format": "uuid",
            "nullable": true,
            "example": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records included in the detail.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "MaxCategories": {
            "type": "integer",
            "description": "Maximum number of categories included in the detail.",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Field that supplies an image for the detail.",
            "format": "uuid",
            "nullable": true,
            "example": "1d2f4b9a-8888-4444-aaaa-bbbbccccdddd"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new detail. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailItemRequest"
            },
            "description": "Optional items to create alongside the detail. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-item`; the first invalid item fails the request.",
            "nullable": true
          },
          "Fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailFieldRequest"
            },
            "description": "Optional fields to create alongside the detail. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-field`; the first invalid field fails the request.",
            "nullable": true
          },
          "Filters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailFilterRequest"
            },
            "description": "Optional filters to create alongside the detail. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-filter`; the first invalid filter fails the request.\r\n            Filters may include inline Values, numbered in the order supplied.",
            "nullable": true
          },
          "Variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailVariableRequest"
            },
            "description": "Optional variable bindings to create alongside the detail. Each is validated and created the\r\n            same way as a POST to `api/v3/entity-detail-variable`; the first invalid variable fails the request.",
            "nullable": true
          },
          "AiTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedEntityDetailAiToolRequest"
            },
            "description": "Optional AI tools to create alongside the detail. Each is validated and created the same\r\n            way as a POST to `api/v3/entity-detail-ai-tool`; the first invalid tool fails the request.\r\n            Only valid on AI prompt details.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity detail — a panel/view attached to an entity\r\n            (e.g. an AI prompt, a URL/embed, or a related-list panel)."
      },
      "PostEntityDetailVariableRequest": {
        "required": [
          "EntityDetailId",
          "EntityVariableId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this variable belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable being assigned a value. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "Identifier of the field or variable supplying the value, when the value type references one.",
            "format": "uuid",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value used when the value type is Constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code used when the value type is a date constant.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity detail variable."
      },
      "PostEntityFieldDefaultRequest": {
        "required": [
          "EntityFieldId",
          "EntityId"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity the default field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field to mark as a default field on the entity. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for marking a field as a default field on an entity."
      },
      "PostEntityFieldKeyRequest": {
        "required": [
          "EntityFieldId",
          "EntityId"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity the key field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field to mark as a key field on the entity. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for marking a field as a key field on an entity."
      },
      "PostEntityFieldListItemRequest": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The field this list item belongs to.",
            "format": "uuid",
            "nullable": true
          },
          "Item": {
            "type": "string",
            "description": "The display text shown for the list item.",
            "nullable": true,
            "example": "Active"
          },
          "Value": {
            "type": "string",
            "description": "The underlying value stored for the list item.",
            "nullable": true,
            "example": "1"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a list item on an entity field."
      },
      "PostEntityFieldRequest": {
        "required": [
          "DisplayName",
          "EntityId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The list to add the field to. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The field's internal name.",
            "nullable": true,
            "example": "CustomerName"
          },
          "Type": {
            "$ref": "#/components/schemas/FieldType"
          },
          "DisplayName": {
            "type": "string",
            "description": "Display name shown for the field in the UI. Required when creating (POST).",
            "nullable": true,
            "example": "Customer Name"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places for numeric fields.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "TableName": {
            "type": "string",
            "description": "Name of the source table/column the field maps to.",
            "nullable": true
          },
          "ReadOnly": {
            "type": "boolean",
            "description": "When true, the field cannot be edited.",
            "nullable": true,
            "example": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "When true, the field is hidden from default views.",
            "nullable": true,
            "example": false
          },
          "ApiName": {
            "type": "string",
            "description": "Name used for the field in API responses.",
            "nullable": true,
            "example": "customerName"
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "DisplayAsNegative": {
            "type": "boolean",
            "description": "Whether the field's value is displayed as a negative number.",
            "nullable": true
          },
          "NegativeFieldId": {
            "type": "string",
            "description": "Identifier of the field that determines when this value is shown as negative.",
            "format": "uuid",
            "nullable": true
          },
          "BaseUnit": {
            "$ref": "#/components/schemas/FieldTimeSpanUnit"
          },
          "DisplayUnit": {
            "$ref": "#/components/schemas/FieldTimeSpanUnit"
          },
          "TextFormat": {
            "$ref": "#/components/schemas/FieldTextFormat"
          },
          "DimensionField": {
            "type": "string",
            "description": "Identifier of the dimension field this field is based on.",
            "format": "uuid",
            "nullable": true
          },
          "DimensionId": {
            "type": "string",
            "description": "Identifier of the dimension this field is based on.",
            "nullable": true
          },
          "UseLookupForListItems": {
            "type": "boolean",
            "description": "When true, list-item display values are resolved via a lookup.",
            "nullable": true,
            "example": false
          },
          "ListItemEntity": {
            "type": "string",
            "description": "Identifier of the entity whose records supply the list items, when list items are looked up.",
            "format": "uuid",
            "nullable": true
          },
          "ListItemValueField": {
            "type": "string",
            "description": "Identifier of the field in the lookup entity that supplies each list item's stored value.",
            "format": "uuid",
            "nullable": true
          },
          "ListItemDisplayField": {
            "type": "string",
            "description": "Identifier of the field in the lookup entity that supplies each list item's display text.",
            "format": "uuid",
            "nullable": true
          },
          "DateFormat": {
            "$ref": "#/components/schemas/FieldDateFormat"
          },
          "DateTimeAdjustmentMethod": {
            "type": "integer",
            "description": "How a date/time value is adjusted for time zone when read.",
            "format": "int32",
            "nullable": true
          },
          "SourceFieldId": {
            "type": "string",
            "description": "Identifier of the field this field derives its value from.",
            "format": "uuid",
            "nullable": true
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostEntityFieldListItemRequest"
            },
            "description": "Inline list-item values to create alongside the field.",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "Expression/script used to compute the field's value. Supplying this makes the field a\r\n            calculated field; reference other fields on the entity by name.",
            "nullable": true,
            "example": "Quantity * UnitPrice"
          },
          "ScriptLanguage": {
            "$ref": "#/components/schemas/CalculatedFieldLanguage"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new field. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a field to an entity. Only the core fields (entity, name, type) are\r\n            commonly required; the rest control formatting, list-item behaviour, and display options."
      },
      "PostEntityMatrixColumnRequest": {
        "required": [
          "EntityId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "Identifier of the matrix entity this column belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The matrix column's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/MatrixColumnType"
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "BaseFieldId": {
            "type": "string",
            "description": "Identifier of the base field this column filters on. Populated only for filter columns.",
            "format": "uuid",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "Expression used to compute the column's value. Populated only for calculation columns.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a matrix column."
      },
      "PostEntityMatrixColumnSummaryRequest": {
        "required": [
          "CustomEntityMatrixColumnId",
          "SummaryColumnId"
        ],
        "type": "object",
        "properties": {
          "CustomEntityMatrixColumnId": {
            "type": "string",
            "description": "Identifier of the summary column this item belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "SummaryColumnId": {
            "type": "string",
            "description": "Identifier of the matrix column that is summarized by this item. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a matrix column summary item."
      },
      "PostEntityMatrixRowRequest": {
        "required": [
          "EntityId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "Identifier of the matrix entity this row belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The matrix row's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/MatrixRowType"
          },
          "BaseFieldId": {
            "type": "string",
            "description": "Identifier of the field the row is based on.",
            "format": "uuid",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "Expression used when the row is a Calculation.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of rows to generate for a Dynamic row.",
            "format": "int32",
            "nullable": true
          },
          "Granularity": {
            "type": "integer",
            "description": "Date grouping granularity when the row is based on a date field.",
            "format": "int32",
            "nullable": true
          },
          "SortType": {
            "$ref": "#/components/schemas/MatrixRowSortType"
          },
          "SortColumn": {
            "type": "string",
            "description": "Identifier of the column the row is sorted by when SortType is By a column.",
            "format": "uuid",
            "nullable": true
          },
          "SortDescending": {
            "type": "boolean",
            "description": "Whether the row is sorted in descending order.",
            "nullable": true
          },
          "HideEmptyRows": {
            "type": "boolean",
            "description": "Whether rows with no values are hidden.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a matrix row."
      },
      "PostEntityMatrixRowSummaryRequest": {
        "required": [
          "CustomEntityMatrixRowId",
          "SummaryRowId"
        ],
        "type": "object",
        "properties": {
          "CustomEntityMatrixRowId": {
            "type": "string",
            "description": "Identifier of the summary row this item belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "SummaryRowId": {
            "type": "string",
            "description": "Identifier of the matrix row that is summarized by this item. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a matrix row summary item."
      },
      "PostEntityMergeRequest": {
        "required": [
          "EntityId",
          "MergeEntityId"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The source entity (list) being merged in. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "MergeEntityId": {
            "type": "string",
            "description": "The merged custom entity this source is added to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "MergeCompanyIds": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The connector companies the merged source draws data from.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a source entity to a merged custom entity."
      },
      "PostEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity (list/table)."
      },
      "PostEntityRestOptimizationRequest": {
        "required": [
          "EntityFieldId",
          "EntityRestId",
          "Key",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityRestId": {
            "type": "string",
            "description": "The REST entity this optimization belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field this optimization filters on. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/OptimizationType"
          },
          "Key": {
            "type": "string",
            "description": "The key (header name, query-parameter name, or body key) the optimized value is written to. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Operator": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a REST optimization that pushes a field filter down to the API."
      },
      "PostEntityTableRequest": {
        "required": [
          "DatabaseName",
          "EntityId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity this table belongs to. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "Display name for the table within the entity. Required when creating (POST).",
            "nullable": true,
            "example": "SalesOrderHeader"
          },
          "DatabaseName": {
            "type": "string",
            "description": "Fully-qualified table/view name in the source database. Required when creating (POST).",
            "nullable": true,
            "example": "dbo.SalesOrderHeader"
          },
          "Script": {
            "type": "string",
            "description": "Optional SQL script used in place of a database table.",
            "nullable": true
          },
          "Alias": {
            "type": "string",
            "description": "Alias used to reference the table in joins and field expressions.",
            "nullable": true,
            "example": "soh"
          },
          "JoinToTableId": {
            "type": "string",
            "description": "Table this table joins to (the parent in the join).",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "JoinType": {
            "type": "integer",
            "description": "Join-type code (e.g. inner/left).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "TableNumber": {
            "type": "integer",
            "description": "Ordinal position of the table within the entity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Summary": {
            "type": "boolean",
            "description": "When true, the table is treated as a summary (aggregated) source.",
            "nullable": true,
            "example": false
          },
          "SourceConnectorId": {
            "type": "string",
            "description": "Connector that owns the table, when sourced from a different connector.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "FromFieldId": {
            "type": "string",
            "description": "Field on this table used as the \"from\" side of the join.",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ToFieldId": {
            "type": "string",
            "description": "Field on the joined-to table used as the \"to\" side of the join.",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a source table to an entity."
      },
      "PostEntityVariableModel": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity the variable belongs to.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The variable's name.",
            "nullable": true,
            "example": "StartDate"
          },
          "FieldType": {
            "type": "integer",
            "description": "The variable's data type.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "How the default value is sourced.",
            "format": "int32",
            "nullable": true
          },
          "DefaultValue": {
            "type": "string",
            "description": "The default value applied to the variable, interpreted per DefaultValueType.",
            "nullable": true,
            "example": "2024-01-01"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for the variable.",
            "nullable": true
          },
          "AllowMultiple": {
            "type": "boolean",
            "description": "Whether the variable accepts multiple values.",
            "nullable": true
          },
          "DisplayAsList": {
            "type": "boolean",
            "description": "Whether the variable is presented to the user as a selectable list.",
            "nullable": true
          },
          "LookupEntityId": {
            "type": "string",
            "description": "The entity used to look up selectable values for the variable.",
            "format": "uuid",
            "nullable": true
          },
          "LookupValueFieldId": {
            "type": "string",
            "description": "The lookup field whose value is stored when a lookup option is selected.",
            "format": "uuid",
            "nullable": true
          },
          "LookupDisplayFieldId": {
            "type": "string",
            "description": "The lookup field shown to the user when selecting an option.",
            "format": "uuid",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The label shown to the user for the variable.",
            "nullable": true,
            "example": "Start date"
          },
          "Fixed": {
            "type": "boolean",
            "description": "Whether the variable's value is fixed and cannot be changed by the user.",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the variable is hidden from the user.",
            "nullable": true
          },
          "ListItemFieldId": {
            "type": "string",
            "description": "The field that supplies the variable's list item values.",
            "format": "uuid",
            "nullable": true
          },
          "Tooltip": {
            "type": "string",
            "description": "Help text shown to the user for the variable.",
            "nullable": true,
            "example": "Enter the date the report should begin."
          },
          "Script": {
            "type": "string",
            "description": "The expression evaluated to produce the value of a calculated variable.",
            "nullable": true,
            "example": "[OrderDate] + 30"
          },
          "Type": {
            "type": "integer",
            "description": "The variable type.",
            "format": "int32",
            "nullable": true
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "The number of decimal places displayed for numeric variables.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an entity variable."
      },
      "PostFavoriteColumnRequest": {
        "required": [
          "EntityFieldId",
          "FavoriteId"
        ],
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite this column belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field this column shows. Must belong to the favorite's entity. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a favorite column."
      },
      "PostFavoriteRequest": {
        "required": [
          "EntityId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity (list/table) this favorite is based on. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The favorite's display name. Required. Max 200 characters. Required when creating (POST).",
            "nullable": true,
            "example": "Open Sales Orders"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records to return. Defaults to 100; cannot exceed 100000.",
            "format": "int32",
            "nullable": true,
            "example": 500
          },
          "ViewType": {
            "$ref": "#/components/schemas/ViewType"
          },
          "ChartSettings": {
            "$ref": "#/components/schemas/ChartSettingsRequest"
          },
          "TextSettings": {
            "$ref": "#/components/schemas/TextSettingsRequest"
          },
          "Columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedFavoriteColumnRequest"
            },
            "description": "Optional columns to create with the favorite, appended in order. Each is validated and created\r\n            the same way as a POST to `api/v3/favorite-column` (its field must belong to the entity).",
            "nullable": true
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedFavoriteRestrictionRequest"
            },
            "description": "Optional restrictions (filters) to create with the favorite, numbered in order. Each — and each\r\n            of its values — is created the same way as a POST to `api/v3/favorite-restriction`\r\n            (and `api/v3/favorite-restriction-value`).",
            "nullable": true
          },
          "Variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedFavoriteVariableRequest"
            },
            "description": "Optional variable values to create with the favorite. Each is created the same way as a POST to\r\n            `api/v3/favorite-variable` (its entity variable must belong to the entity).",
            "nullable": true
          },
          "Sharing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedFavoriteSharingRequest"
            },
            "description": "Optional shares to create with the favorite, granting users or teams access. Each is created the\r\n            same way as a POST to `api/v3/favorite-sharing`.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Optional tags to apply to the favorite. Each entry links an existing tag (TagId) or finds-or-creates\r\n            one for the current user (Value). Applied on create only.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a favorite (a saved list, chart, or text view of an entity)."
      },
      "PostFavoriteRestrictionRequest": {
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite this restriction belongs to.",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionNumber": {
            "type": "integer",
            "description": "Ordinal position of the restriction within the favorite's filter.",
            "format": "int32",
            "nullable": true
          },
          "SubqueryId": {
            "type": "string",
            "description": "The subquery the restriction targets, when filtering on a related list.",
            "format": "uuid",
            "nullable": true
          },
          "FieldId": {
            "type": "string",
            "description": "The entity field the restriction filters on.",
            "format": "uuid",
            "nullable": true
          },
          "Operator": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "nullable": true
          },
          "Conjunctive": {
            "type": "integer",
            "description": "Integer code for how this restriction joins the previous one: 0 = None, 1 = And, 2 = Or.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a favorite restriction (filter)."
      },
      "PostFavoriteRestrictionValueRequest": {
        "type": "object",
        "properties": {
          "RestrictionId": {
            "type": "string",
            "description": "The restriction this value belongs to.",
            "format": "uuid",
            "nullable": true
          },
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of the value within its restriction (for example, the two ends of a Between).",
            "format": "int32",
            "nullable": true
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the value is supplied: 0 = Constant, 1 = Field, 2 = Calculation, 3 = Date, 4 = Variable, 5 = Parent field, 6 = Fiscal period, 7 = Fiscal year, 8 = Parameter.",
            "format": "int32",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against. Populated only when the value type is Constant.",
            "nullable": true
          },
          "DateValueType": {
            "type": "integer",
            "description": "The relative-date code, when the value type is a date value.",
            "format": "int32",
            "nullable": true
          },
          "FieldId": {
            "type": "string",
            "description": "The field whose value is used, when the value type is Field.",
            "format": "uuid",
            "nullable": true
          },
          "VariableId": {
            "type": "string",
            "description": "The variable whose value is used, when the value type is Variable.",
            "format": "uuid",
            "nullable": true
          },
          "TimeValueType": {
            "type": "integer",
            "description": "The relative-time code, when the value type is a time value.",
            "format": "int32",
            "nullable": true
          },
          "EmailValueType": {
            "type": "integer",
            "description": "The email value code, when the value type is an email value.",
            "format": "int32",
            "nullable": true
          },
          "CustomFilterTypeId": {
            "type": "string",
            "description": "The custom filter type the value uses, when the value is supplied by a custom filter.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a favorite restriction value."
      },
      "PostFavoriteSharingRequest": {
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite this share belongs to.",
            "format": "uuid",
            "nullable": true
          },
          "UserTeamId": {
            "type": "string",
            "description": "The id of the user or team to share with, matching Popdock.WebApi.Models.Request.Post.PostFavoriteSharingRequest.ShareType.",
            "format": "uuid",
            "nullable": true
          },
          "ShareType": {
            "type": "integer",
            "description": "Integer code for whether Popdock.WebApi.Models.Request.Post.PostFavoriteSharingRequest.UserTeamId identifies a user or a team: 1 = user, 2 = team.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a favorite share, granting a user or team access."
      },
      "PostFavoriteTagRequest": {
        "required": [
          "FavoriteId",
          "Tag"
        ],
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite this tag belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Tag": {
            "type": "string",
            "description": "The tag's display name. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a favorite tag."
      },
      "PostHomeLayoutItem": {
        "type": "object",
        "properties": {
          "HomeLayoutId": {
            "type": "string",
            "description": "Identifier of the home page layout the tile belongs to. Required.",
            "format": "uuid",
            "nullable": true
          },
          "Column": {
            "type": "integer",
            "description": "The tile's column position in the layout grid. Defaults to 0 when omitted.",
            "format": "int32",
            "nullable": true
          },
          "Row": {
            "type": "integer",
            "description": "The tile's row position in the layout grid. Defaults to 0 when omitted.",
            "format": "int32",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the home widget type the tile renders: 1 = Start, 2 = Recent favorites, 3 = Frequent favorites, 4 = Shortcuts, 5 = Downloads, 6 = Links, 7 = News, 8 = Videos, 9 = Add tab, 10 = Favorite, 11 = Summary, 12 = Tagged favorites. Required.",
            "format": "int32",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The tile's display title.",
            "nullable": true
          },
          "FavoriteId": {
            "type": "string",
            "description": "Identifier of the favorite shown by the tile, when the tile is bound to a favorite.",
            "format": "uuid",
            "nullable": true
          },
          "Url": {
            "type": "string",
            "description": "The link URL opened by the tile, when the tile is a link.",
            "nullable": true
          },
          "TagId": {
            "type": "string",
            "description": "Identifier of the tag whose favorites the tile displays, when the tile is bound to a tag.",
            "format": "uuid",
            "nullable": true
          },
          "AddType": {
            "type": "integer",
            "description": "Integer code describing how items are added to the tile.",
            "format": "int32",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "Identifier of the company the tile is scoped to, when set.",
            "format": "uuid",
            "nullable": true
          },
          "Height": {
            "type": "integer",
            "description": "The tile's height in the layout grid.",
            "format": "int32",
            "nullable": true
          },
          "TileLeft": {
            "type": "integer",
            "description": "The tile's horizontal position (left offset) in the layout grid.",
            "format": "int32",
            "nullable": true
          },
          "TileTop": {
            "type": "integer",
            "description": "The tile's vertical position (top offset) in the layout grid.",
            "format": "int32",
            "nullable": true
          },
          "TileWidth": {
            "type": "integer",
            "description": "The tile's width in the layout grid.",
            "format": "int32",
            "nullable": true
          },
          "TileHeight": {
            "type": "integer",
            "description": "The tile's height in the layout grid.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a home page layout tile (item)."
      },
      "PostJoinEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PostLookupRequest": {
        "required": [
          "EntityId",
          "InputFieldId",
          "Name",
          "OutputFieldId"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The lookup's display name. Required. Required when creating (POST).",
            "nullable": true,
            "example": "Customer Name by Id"
          },
          "Description": {
            "type": "string",
            "description": "Optional description of what the lookup resolves.",
            "nullable": true,
            "example": "Resolves a customer id to its display name."
          },
          "EntityId": {
            "type": "string",
            "description": "The entity (list/table) the lookup reads from. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "InputFieldId": {
            "type": "string",
            "description": "Field whose value is matched against (the lookup key). Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "OutputFieldId": {
            "type": "string",
            "description": "Field whose value is returned for a matched row (the lookup result). Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "CompanyId": {
            "type": "string",
            "description": "Optional company to scope the lookup to.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedLookupRestrictionRequest"
            },
            "description": "Optional restrictions (filters) to create with the lookup. Each — and each of its values — is\r\n            created the same way as a POST to `api/v3/lookup-restriction` (and `api/v3/lookup-restriction-value`).\r\n            Each restriction's EntityFieldId must belong to the lookup's entity.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new lookup. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a lookup that maps an input field value to an output field value."
      },
      "PostLookupRestrictionRequest": {
        "required": [
          "EntityFieldId",
          "LookupId",
          "RestrictionType"
        ],
        "type": "object",
        "properties": {
          "LookupId": {
            "type": "string",
            "description": "The lookup this restriction belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field that this restriction is applied to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a lookup restriction."
      },
      "PostMatrixEntityRequest": {
        "required": [
          "BaseEntityId",
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "BaseEntityId": {
            "type": "string",
            "description": "The underlying entity the matrix is built from. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "SummaryFieldId": {
            "type": "string",
            "description": "Identifier of the field whose values are aggregated in the matrix.",
            "format": "uuid",
            "nullable": true
          },
          "AddColumns": {
            "type": "boolean",
            "description": "Whether the matrix generates columns.",
            "nullable": true
          },
          "ColumnFieldId": {
            "type": "string",
            "description": "Identifier of the field the columns are based on.",
            "format": "uuid",
            "nullable": true
          },
          "ColumnDateFormat": {
            "$ref": "#/components/schemas/FieldDateFormat"
          },
          "StartDate": {
            "type": "string",
            "description": "Start of the date range used to generate columns.",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "End of the date range used to generate columns.",
            "format": "date-time",
            "nullable": true
          },
          "AddSummaryColumn": {
            "type": "boolean",
            "description": "Whether a summary column is added totalling the row values.",
            "nullable": true
          },
          "AddRows": {
            "type": "boolean",
            "description": "Whether the matrix generates rows.",
            "nullable": true
          },
          "RowFieldId": {
            "type": "string",
            "description": "Identifier of the field the rows are based on.",
            "format": "uuid",
            "nullable": true
          },
          "RowDateFormat": {
            "$ref": "#/components/schemas/FieldDateFormat"
          },
          "AddSummaryRow": {
            "type": "boolean",
            "description": "Whether a summary row is added totalling the column values.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a matrix entity."
      },
      "PostMcpPromptMessageRestrictionRequest": {
        "required": [
          "McpPromptMessageId",
          "McpPromptParameterId",
          "RestrictionType"
        ],
        "type": "object",
        "properties": {
          "McpPromptMessageId": {
            "type": "string",
            "description": "The prompt message this restriction belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "McpPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter that the restriction is evaluated against. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostMcpPromptMessageRestrictionValueRequest"
            },
            "description": "The values the parameter is compared against, created alongside the restriction. Each is created the same way as a POST to\r\n            `api/v3/mcp-prompt-message-restriction-value`.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP prompt message restriction."
      },
      "PostMcpPromptMessageRestrictionValueRequest": {
        "required": [
          "McpPromptMessageRestrictionId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "McpPromptMessageRestrictionId": {
            "type": "string",
            "description": "The restriction this value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against. Used when the value type is Constant.",
            "nullable": true
          },
          "McpPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter whose value is compared against. Used when the value type is Parameter.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP prompt message restriction value."
      },
      "PostMcpPromptParameterValidationRequest": {
        "required": [
          "ErrorMessage",
          "McpPromptParameterId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "McpPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter this validation rule belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/McpToolValidationType"
          },
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value must match. Used when the validation type is Regex.",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message shown when the value fails this validation. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "MaxValue": {
            "type": "integer",
            "description": "The maximum allowed value or length. Used when the validation type is Max value or Max length.",
            "format": "int32",
            "nullable": true
          },
          "MinValue": {
            "type": "integer",
            "description": "The minimum allowed value or length. Used when the validation type is Min value or Min length.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP prompt parameter validation rule."
      },
      "PostMcpPromptRequest": {
        "required": [
          "McpServerId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "McpServerId": {
            "type": "string",
            "description": "The MCP server this prompt belongs to. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The prompt's name (the identifier AI clients call it by). Required when creating (POST).",
            "nullable": true,
            "example": "summarize_orders"
          },
          "Description": {
            "type": "string",
            "description": "A human-readable description of what the prompt does.",
            "nullable": true,
            "example": "Summarizes a customer's open orders."
          },
          "Status": {
            "$ref": "#/components/schemas/McpPromptStatus"
          },
          "MessageRole": {
            "$ref": "#/components/schemas/McpPromptMessageRole"
          },
          "Message": {
            "type": "string",
            "description": "The prompt message body. May contain {placeholders} for parameters.",
            "nullable": true,
            "example": "Summarize the open orders for customer {customerName}."
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpPromptParameterRequest"
            },
            "description": "Optional parameters to create alongside the prompt. Each is created the same way as a POST to\r\n            `api/v3/mcp-prompt-parameter` (with optional inline validations); the first invalid parameter fails the request.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new prompt. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP prompt — a reusable prompt template on a server."
      },
      "PostMcpToolParameterListItemRequest": {
        "type": "object",
        "properties": {
          "McpToolParameterId": {
            "type": "string",
            "description": "The MCP tool parameter this list item belongs to.",
            "format": "uuid",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The list item's key (the value supplied for the parameter).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The list item's display value (the label shown for the key).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an allowed list item on an MCP tool parameter."
      },
      "PostMcpToolParameterRequest": {
        "required": [
          "ApplyType",
          "Description",
          "McpToolId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The parameter's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The parameter's display title.",
            "nullable": true
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "ApplyType": {
            "$ref": "#/components/schemas/McpToolParameterApplyType"
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field this parameter filters, when bound to a field.",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "Identifier of the entity variable this parameter sets, when bound to a variable.",
            "format": "uuid",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the parameter shown to the AI client. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied by the client.",
            "nullable": true
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PostMcpToolParameterListItemRequest"
            },
            "description": "Optional allowed list items to create alongside the parameter.",
            "nullable": true
          },
          "SortFields": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the entity fields this parameter can sort by, created alongside the parameter.",
            "nullable": true
          },
          "ActionField": {
            "type": "string",
            "description": "For an action field parameter, the name of the action field to bind to.",
            "nullable": true
          },
          "ActionFieldId": {
            "type": "string",
            "description": "For an action field parameter, the identifier of the action field to bind to.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP tool parameter."
      },
      "PostMcpToolParameterValidationRequest": {
        "required": [
          "ErrorMessage",
          "McpToolParameterId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "McpToolParameterId": {
            "type": "string",
            "description": "The MCP tool parameter this validation rule belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "$ref": "#/components/schemas/McpToolValidationType"
          },
          "RegexValue": {
            "type": "string",
            "description": "The regular expression the value is matched against, for a regex rule.",
            "nullable": true
          },
          "ErrorMessage": {
            "type": "string",
            "description": "The error message returned when the value fails this rule. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "MaxValue": {
            "type": "integer",
            "description": "The maximum allowed value or length, for a maximum/range rule.",
            "format": "int32",
            "nullable": true
          },
          "MinValue": {
            "type": "integer",
            "description": "The minimum allowed value or length, for a minimum/range rule.",
            "format": "int32",
            "nullable": true
          },
          "MaxDate": {
            "type": "string",
            "description": "The maximum allowed date, for a maximum-date rule.",
            "format": "date-time",
            "nullable": true
          },
          "MinDate": {
            "type": "string",
            "description": "The minimum allowed date, for a minimum-date rule.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a validation rule on an MCP tool parameter."
      },
      "PostMcpToolRequest": {
        "required": [
          "Description",
          "McpServerId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "McpServerId": {
            "type": "string",
            "description": "The MCP server this tool belongs to. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The tool's name (the identifier AI clients call it by). Required when creating (POST).",
            "nullable": true,
            "example": "get_sales_orders"
          },
          "Description": {
            "type": "string",
            "description": "A human-readable description of what the tool does. Required when creating (POST).",
            "nullable": true,
            "example": "Returns sales orders, optionally filtered by customer or date."
          },
          "Title": {
            "type": "string",
            "description": "A human-friendly title shown for the tool.",
            "nullable": true,
            "example": "Get Sales Orders"
          },
          "Type": {
            "$ref": "#/components/schemas/McpToolType"
          },
          "ConnectorId": {
            "type": "string",
            "description": "Connector backing the tool, when it queries connector data.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "EntityId": {
            "type": "string",
            "description": "Entity (list/table) the tool queries.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records the tool returns.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "ActionId": {
            "type": "string",
            "description": "Action the tool runs, when backed by an action.",
            "format": "uuid",
            "nullable": true
          },
          "ResponseType": {
            "$ref": "#/components/schemas/McpToolResponseType"
          },
          "ResponseText": {
            "type": "string",
            "description": "Static response text returned, when the tool returns fixed text.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the tool's output.",
            "nullable": true,
            "example": "en-US"
          },
          "DefaultCompanyId": {
            "type": "string",
            "description": "Company used by default when the tool queries data.",
            "format": "uuid",
            "nullable": true
          },
          "FileFieldId": {
            "type": "string",
            "description": "The field that supplies the file, for file tools.",
            "format": "uuid",
            "nullable": true
          },
          "ResponseFilename": {
            "type": "string",
            "description": "Filename used for the file the tool returns.",
            "nullable": true
          },
          "ResponseWorksheetName": {
            "type": "string",
            "description": "Worksheet name used for the spreadsheet the tool returns.",
            "nullable": true
          },
          "Status": {
            "$ref": "#/components/schemas/McpToolStatus"
          },
          "CodeModeOnly": {
            "type": "boolean",
            "description": "When true, the tool is reachable only from within the server's code tool (run_code): it is\r\n            hidden from the tools list and a direct call to it is rejected. Defaults to false.",
            "nullable": true,
            "example": false
          },
          "FieldType": {
            "$ref": "#/components/schemas/FieldType"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places used to format the script's numeric result.",
            "format": "int32",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "The script the tool runs, for run-script tools.",
            "nullable": true
          },
          "ThirdPartyMcpToolId": {
            "type": "string",
            "description": "The third-party MCP tool this tool proxies, for third-party tools.",
            "format": "uuid",
            "nullable": true
          },
          "Action": {
            "type": "string",
            "description": "The action the third-party MCP tool invokes.",
            "nullable": true
          },
          "ZipFileType": {
            "$ref": "#/components/schemas/McpToolZipType"
          },
          "ZipFilename": {
            "type": "string",
            "description": "Filename used for the zip archive of the output files.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpToolParameterRequest"
            },
            "description": "Optional parameters to create alongside the tool. Each is validated and created the same\r\n            way as a POST to `api/v3/mcp-tool-parameter`; the first invalid parameter fails the request.",
            "nullable": true
          },
          "ActionFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpToolActionFieldRequest"
            },
            "description": "Optional action fields to create alongside the tool (for Action tools). Each is created the\r\n            same way as a POST to `api/v3/mcp-tool-action-field`. An action field bound to a parameter is\r\n            best expressed via a parameter with ApplyType ActionField, which creates the linked action field for you.",
            "nullable": true
          },
          "ResponseFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpToolResponseFieldRequest"
            },
            "description": "Optional response (return) fields to create alongside the tool. Each is validated and created\r\n            the same way as a POST to `api/v3/mcp-tool-response-field`; the first invalid field fails the request.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new tool. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP tool — exposing a list, favorite, lookup, action, or workflow to\r\n            AI clients. The core fields (server, name, type, and the backing resource) are the common ones; the\r\n            rest configure the response format and messaging."
      },
      "PostMcpToolResponseFieldRequest": {
        "required": [
          "McpToolId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this response field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The response field's name as returned to the client. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the response field shown to the AI client.",
            "nullable": true
          },
          "ActionField": {
            "type": "string",
            "description": "The name of the action field this response field maps to, when sourced from an action.",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field this response field maps to, when sourced from an entity field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP tool response (return) field."
      },
      "PostMcpToolRestrictionApplyRequest": {
        "required": [
          "ApplyToId",
          "ApplyToType",
          "McpToolRestrictionId"
        ],
        "type": "object",
        "properties": {
          "McpToolRestrictionId": {
            "type": "string",
            "description": "The MCP tool restriction this apply rule belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ApplyToType": {
            "type": "integer",
            "description": "What the restriction applies to: 1 = user, 2 = team, 3 = MCP client. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "ApplyToId": {
            "type": "string",
            "description": "The id of the user, team or MCP client the restriction applies to. Must belong to your account. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP tool restriction apply rule."
      },
      "PostMcpToolRestrictionRequest": {
        "required": [
          "EntityFieldId",
          "McpToolId",
          "RestrictionType"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this restriction belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the restriction filters on. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpToolRestrictionValueRequest"
            },
            "description": "The values the operator compares against (e.g. one for Equals, two for Between). Optional; created\r\n            alongside the restriction.",
            "nullable": true
          },
          "Applies": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NestedMcpToolRestrictionApplyRequest"
            },
            "description": "The users, teams or MCP clients the restriction applies to. Optional; created alongside the\r\n            restriction.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating an MCP tool restriction."
      },
      "PostMergeEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PostQueryBuilderEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "ApiEndpoint": {
            "type": "string",
            "description": "Relative URL endpoint, appended to the connector's base URL, that this entity reads from.",
            "nullable": true,
            "example": "/api/v2/customers"
          },
          "FileFormat": {
            "type": "integer",
            "description": "The file format the endpoint returns.",
            "format": "int32",
            "nullable": true
          },
          "FirstResourceId": {
            "type": "integer",
            "description": "Starting resource id used only when this is the first query-builder list created for the connector\r\nand the connector has no resource id configured yet. When omitted, the value is read from the\r\nconnector's \"FirstResourceId\" setting, otherwise it defaults to 77000.",
            "format": "int32",
            "nullable": true,
            "example": 77000
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a query-builder entity."
      },
      "PostRestConnectorRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "Display name for the connector. Required. Max 500 characters. Required when creating (POST).",
            "nullable": true,
            "example": "My REST API"
          },
          "BaseUrl": {
            "type": "string",
            "description": "Base URL all of the connector's requests are made against.",
            "nullable": true,
            "example": "https://api.example.com/v1"
          },
          "AuthenticationMethod": {
            "$ref": "#/components/schemas/AuthenticationMethod"
          },
          "PagingMethod": {
            "$ref": "#/components/schemas/PagingMethod"
          },
          "OptimizationMethod": {
            "type": "integer",
            "description": "How the connector pushes filters down to the API to optimize requests.",
            "format": "int32",
            "nullable": true
          },
          "DateMethod": {
            "$ref": "#/components/schemas/DateFormat"
          },
          "CustomDateFormat": {
            "type": "string",
            "description": "Custom date format string used when the date method is Custom.",
            "nullable": true,
            "example": "yyyy-MM-ddTHH:mm:ss"
          },
          "Timezone": {
            "type": "string",
            "description": "Timezone used when formatting and interpreting dates in requests and responses.",
            "nullable": true
          },
          "RequestMethod": {
            "$ref": "#/components/schemas/eOne.Microservice.Shared.CustomRest.RestEnums.RequestMethod"
          },
          "ODataVersion": {
            "type": "integer",
            "description": "The OData protocol version, when the API is an OData service.",
            "format": "int32",
            "nullable": true
          },
          "TokenRefreshMethod": {
            "type": "integer",
            "description": "When the access token is refreshed (for example on error or after a time period).",
            "format": "int32",
            "nullable": true
          },
          "AuthorizeUrl": {
            "type": "string",
            "description": "OAuth authorization endpoint the user is sent to in order to grant access.",
            "nullable": true
          },
          "TokenUrl": {
            "type": "string",
            "description": "OAuth endpoint used to obtain an access token.",
            "nullable": true
          },
          "RefreshTokenUrl": {
            "type": "string",
            "description": "OAuth endpoint used to refresh an expired access token.",
            "nullable": true
          },
          "RefreshUnit": {
            "type": "integer",
            "description": "Time unit used to measure how long before the token is refreshed.",
            "format": "int32",
            "nullable": true
          },
          "RefreshUnitLength": {
            "type": "integer",
            "description": "Number of refresh units to wait before the token is refreshed.",
            "format": "int32",
            "nullable": true
          },
          "ClientId": {
            "type": "string",
            "description": "OAuth client identifier.",
            "nullable": true
          },
          "Secret": {
            "type": "string",
            "description": "OAuth client secret.",
            "nullable": true
          },
          "Scope": {
            "type": "string",
            "description": "OAuth scopes requested when authorizing.",
            "nullable": true
          },
          "State": {
            "type": "string",
            "description": "OAuth state value sent on the authorization request.",
            "nullable": true
          },
          "NextPagePath": {
            "type": "string",
            "description": "Path within the response that holds the URL of the next page, when paging by next page URL.",
            "nullable": true,
            "example": "links.next"
          },
          "PageCountPath": {
            "type": "string",
            "description": "Path within the response that holds the total page count, when paging by page count.",
            "nullable": true,
            "example": "meta.totalPages"
          },
          "PageParameter": {
            "type": "string",
            "description": "Query-string parameter that carries the page number.",
            "nullable": true,
            "example": "page"
          },
          "PageOffsetPath": {
            "type": "string",
            "description": "Path within the response that holds the current offset, when paging by page offset.",
            "nullable": true,
            "example": "meta.offset"
          },
          "PageOffsetParameter": {
            "type": "string",
            "description": "Name of the request parameter used to specify the record offset.",
            "nullable": true,
            "example": "offset"
          },
          "PageSize": {
            "type": "integer",
            "description": "Number of records requested per page.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "PageSizeParameter": {
            "type": "string",
            "description": "Query-string parameter that carries the page size.",
            "nullable": true,
            "example": "pageSize"
          },
          "CompanyEndpoint": {
            "type": "string",
            "description": "Relative URL endpoint used to discover the companies (organizations) available on the API.",
            "nullable": true
          },
          "CompanyRequestMethod": {
            "$ref": "#/components/schemas/eOne.Microservice.Shared.CustomRest.RestEnums.RequestMethod"
          },
          "CompanyIdPath": {
            "type": "string",
            "description": "Path within the company endpoint response that holds each company's identifier.",
            "nullable": true
          },
          "CompanyNamePath": {
            "type": "string",
            "description": "Path within the company endpoint response that holds each company's name.",
            "nullable": true
          },
          "ResponseType": {
            "type": "integer",
            "description": "The expected response format (for example JSON or XML).",
            "format": "int32",
            "nullable": true
          },
          "BodyType": {
            "type": "integer",
            "description": "The request body format (for example JSON, XML, text, or URL-encoded form).",
            "format": "int32",
            "nullable": true
          },
          "RetryOnError": {
            "type": "boolean",
            "description": "Whether failed requests are automatically retried.",
            "nullable": true
          },
          "MaxRetries": {
            "type": "integer",
            "description": "Maximum number of retry attempts when retry on error is enabled.",
            "format": "int32",
            "nullable": true
          },
          "RetrySleepTime": {
            "type": "integer",
            "description": "Number of milliseconds to wait between retry attempts.",
            "format": "int32",
            "nullable": true
          },
          "ExchangeTokenEndpoint": {
            "type": "string",
            "description": "Endpoint used to exchange a code or credential for an access token, when using exchange-token authentication.",
            "nullable": true
          },
          "ExchangeTokenRequestMethod": {
            "$ref": "#/components/schemas/eOne.Microservice.Shared.CustomRest.RestEnums.RequestMethod"
          },
          "ExchangeTokenBodyType": {
            "type": "integer",
            "description": "The body format of the token-exchange request (for example JSON, XML, text, or URL-encoded form).",
            "format": "int32",
            "nullable": true
          },
          "ExchangeTokenBody": {
            "type": "string",
            "description": "Request body template sent to the token-exchange endpoint.",
            "nullable": true
          },
          "TokenExpiryResponsePath": {
            "type": "string",
            "description": "Path within the token-exchange response that holds the token expiry.",
            "nullable": true
          },
          "ExchangeTokenResponsePath": {
            "type": "string",
            "description": "Path within the token-exchange response that holds the access token.",
            "nullable": true
          },
          "ExchangeTokenExpiryMethod": {
            "type": "integer",
            "description": "When the exchanged token expires and must be renewed.",
            "format": "int32",
            "nullable": true
          },
          "ExchangeTokenExpiryLength": {
            "type": "integer",
            "description": "Number of expiry units before the exchanged token expires.",
            "format": "int32",
            "nullable": true
          },
          "ExchangeTokenExpiryUnit": {
            "type": "integer",
            "description": "Time unit used to measure how long before the exchanged token expires.",
            "format": "int32",
            "nullable": true
          },
          "ConnectorSetupId": {
            "type": "string",
            "description": "The connector setup template this connector was created from, when applicable.",
            "format": "uuid",
            "nullable": true
          },
          "HasMorePagesPath": {
            "type": "string",
            "description": "Path within the response indicating whether more pages are available.",
            "nullable": true,
            "example": "meta.hasMore"
          },
          "PageCountPathType": {
            "type": "integer",
            "description": "Where the page-count value is read from (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "PageOffsetPathType": {
            "type": "integer",
            "description": "Where the page-offset value is read from (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "HasMorePagesPathType": {
            "type": "integer",
            "description": "Where the has-more-pages value is read from (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "PageParameterType": {
            "type": "integer",
            "description": "Where the page-number parameter is sent (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "NextPagePathType": {
            "type": "integer",
            "description": "Where the next-page value is read from (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "PageOffsetParameterType": {
            "type": "integer",
            "description": "Where the page-offset parameter is sent (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "PageSizeParameterType": {
            "type": "integer",
            "description": "Where the page-size parameter is sent (for example header, URL parameter, or body).",
            "format": "int32",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Optional description of the connector.",
            "nullable": true,
            "example": "Read-only connection to the example reporting API."
          },
          "MaxConcurrentRequests": {
            "type": "integer",
            "description": "Maximum number of requests allowed to run concurrently against the API.",
            "format": "int32",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new connector. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a REST connector. Only the core fields are required; the rest tune\r\n            authentication, paging, and token handling for the target API."
      },
      "PostRestEntityRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Endpoint": {
            "type": "string",
            "description": "Relative URL endpoint, appended to the connector's base URL, that this entity reads from.",
            "nullable": true,
            "example": "/api/v2/customers"
          },
          "RequestMethod": {
            "type": "integer",
            "description": "The HTTP request method used to call the endpoint (for example GET or POST). Defaults to inheriting from the connector.",
            "format": "int32",
            "nullable": true
          },
          "BodyType": {
            "type": "integer",
            "description": "The request body format (for example JSON, XML, text, or URL-encoded form). Defaults to inheriting from the connector.",
            "format": "int32",
            "nullable": true
          },
          "Body": {
            "type": "string",
            "description": "Request body template sent with the call, when the request method uses a body.",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true
          },
          "ReplaceParameters": {
            "type": "boolean",
            "description": "Whether parameters defined on the connector are replaced rather than merged for this entity.",
            "nullable": true
          },
          "ReplaceHeaders": {
            "type": "boolean",
            "description": "Whether headers defined on the connector are replaced rather than merged for this entity.",
            "nullable": true
          },
          "DetailOnly": {
            "type": "boolean",
            "description": "Whether the entity can only be used to load a single record's detail rather than listed.",
            "nullable": true
          },
          "ParentEntity": {
            "type": "string",
            "description": "The parent entity this entity is nested under, when it depends on a parent record.",
            "format": "uuid",
            "nullable": true
          },
          "IgnoreErrors": {
            "type": "boolean",
            "description": "Whether errors returned by the REST call are ignored rather than failing the request.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a REST entity (list/table) backed by a REST connector endpoint."
      },
      "PostScheduledJobRequest": {
        "required": [
          "EntityId",
          "Name",
          "Time"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The scheduled job's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "JobType": {
            "type": "integer",
            "description": "Integer code for the job type: 1 = Send email, 2 = Export.",
            "format": "int32"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the entity the job runs against. Required on create. Required when creating (POST).",
            "format": "uuid"
          },
          "FavoriteId": {
            "type": "string",
            "description": "Identifier of the saved favorite (query/view) the job runs, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the companies the job runs against.",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "Identifier of the action the job runs, if applicable.",
            "format": "uuid",
            "nullable": true
          },
          "DestinationConnectorId": {
            "type": "string",
            "description": "Identifier of the connector files are exported to, for export jobs.",
            "format": "uuid",
            "nullable": true
          },
          "ScheduleType": {
            "type": "integer",
            "description": "Integer code for the recurrence pattern: 1 = Every day, 2 = Every N days, 3 = Specific days of the week, 4 = Specific days of the month, 5 = Last day of the month, 6 = Every Nth day of week of the month.",
            "format": "int32"
          },
          "Days": {
            "type": "integer",
            "description": "The interval in days, used when the schedule type is Every N days.",
            "format": "int32",
            "nullable": true
          },
          "Ordinal": {
            "type": "integer",
            "description": "The ordinal week of the month (for example 1 for first, 2 for second), used when the schedule type is Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true
          },
          "DayOfWeek": {
            "type": "integer",
            "description": "Day of the week as an integer where 0 = Sunday through 6 = Saturday, used when the schedule type is Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true
          },
          "Time": {
            "type": "string",
            "description": "Time of day to run, in \"HH:mm\" 24-hour format. Required when creating (POST).",
            "nullable": true
          },
          "Email": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Email addresses the job's output is sent to, for email jobs.",
            "nullable": true
          },
          "Subject": {
            "type": "string",
            "description": "Subject line of the email, for email jobs.",
            "nullable": true
          },
          "Body": {
            "type": "string",
            "description": "Body content of the email, for email jobs.",
            "nullable": true
          },
          "Format": {
            "type": "integer",
            "description": "Integer code for the output file format, used by export jobs: 1 = Excel, 2 = CSV.",
            "format": "int32"
          },
          "Items": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Day selections whose meaning depends on ScheduleType (days of week / days of month).",
            "nullable": true
          },
          "Filename": {
            "type": "string",
            "description": "Name of the generated output file.",
            "nullable": true
          },
          "Path": {
            "type": "string",
            "description": "Destination folder path the file is written to, for export jobs.",
            "nullable": true
          },
          "CreateIfNotExists": {
            "type": "boolean",
            "description": "Whether the destination path is created if it does not already exist.",
            "nullable": true
          },
          "FileNameConflictBehavior": {
            "type": "integer",
            "description": "Integer code for how name clashes are handled when writing the file: 0 = Fail, 1 = Rename, 2 = Replace.",
            "format": "int32",
            "nullable": true
          },
          "Timezone": {
            "type": "string",
            "description": "IANA time zone the run time is interpreted in.",
            "nullable": true
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the job's status: 1 = Active, 2 = Inactive.",
            "format": "int32",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new scheduled job. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          },
          "Hour": {
            "type": "integer",
            "description": "Hour of the day the job runs, in 24-hour time (0 to 23), parsed from Time.",
            "format": "int32",
            "readOnly": true
          },
          "Minute": {
            "type": "integer",
            "description": "Minute of the hour the job runs (0 to 59), parsed from Time.",
            "format": "int32",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a scheduled job."
      },
      "PostSummaryEntityRequest": {
        "required": [
          "BaseEntityId",
          "ConnectorId",
          "Name",
          "SummaryMethod"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label used for records of this entity (e.g. \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label used for a record of this entity (e.g. \"Order\").",
            "nullable": true,
            "example": "Order"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "BaseEntityId": {
            "type": "string",
            "description": "The underlying base entity that this summary aggregates over. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "GroupFieldId": {
            "type": "string",
            "description": "Identifier of the field the summary groups its rows by.",
            "format": "uuid",
            "nullable": true
          },
          "GroupDateFormat": {
            "$ref": "#/components/schemas/FieldDateFormat"
          },
          "SummaryMethod": {
            "$ref": "#/components/schemas/FieldSummaryMethod"
          },
          "SummaryFields": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the fields to aggregate for each group.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a summary entity."
      },
      "PostTagLinkRequest": {
        "required": [
          "LinkId"
        ],
        "type": "object",
        "properties": {
          "LinkId": {
            "type": "string",
            "description": "Identifier of the resource to link. Required. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "LinkType": {
            "type": "integer",
            "description": "The resource type being linked (see ResourceType — e.g. 1 = Connector, 2 = List, 5 = Favorite).",
            "format": "int32",
            "example": 2
          }
        },
        "additionalProperties": false,
        "description": "Identifies a resource to link to a tag."
      },
      "PostWidgetAiAttachmentRequest": {
        "required": [
          "Name",
          "Type",
          "WidgetId"
        ],
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget this attachment belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The attachment type: 1 = List, 2 = Parameter. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "EntityId": {
            "type": "string",
            "description": "The entity the attachment draws its data from.",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The company the attachment is scoped to.",
            "format": "uuid",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records the attachment returns.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a widget AI attachment."
      },
      "PostWidgetAiFavoriteAttachmentRequest": {
        "required": [
          "WidgetAiFavoriteId"
        ],
        "type": "object",
        "properties": {
          "WidgetAiFavoriteId": {
            "type": "string",
            "description": "The widget AI favorite this attachment belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "WidgetAiAttachmentId": {
            "type": "string",
            "description": "The attachment associated with the AI favorite.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for associating an attachment with a widget AI favorite."
      },
      "PostWidgetAiToolRequest": {
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget this AI tool belongs to.",
            "format": "uuid"
          },
          "ConnectorAiToolId": {
            "type": "string",
            "description": "The connector AI tool that this widget AI tool references.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Fields for assigning a connector AI tool to a widget."
      },
      "PostWidgetFormRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The widget form's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The title shown on the widget form.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the widget form.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the form's content.",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "The action submitted when the form is completed.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a widget form — a form that submits an action."
      },
      "PostWidgetGroupRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The widget group's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The title shown on the widget group.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Description of the widget group.",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the widget group's content.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a widget group — a set of widgets presented as tabs."
      },
      "PostWidgetRequest": {
        "required": [
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The widget's internal name. Required when creating (POST).",
            "nullable": true,
            "example": "open-orders"
          },
          "Title": {
            "type": "string",
            "description": "The title shown on the widget.",
            "nullable": true,
            "example": "Open Orders"
          },
          "Type": {
            "$ref": "#/components/schemas/WidgetType"
          },
          "ConnectorId": {
            "type": "string",
            "description": "Connector backing the widget, when it shows connector data.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "EntityId": {
            "type": "string",
            "description": "Entity (list/table) the widget shows.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "FavoriteId": {
            "type": "string",
            "description": "Favorite the widget shows, when backed by a saved favorite.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "DefaultItemId": {
            "type": "string",
            "description": "The widget item shown by default.",
            "format": "uuid",
            "nullable": true
          },
          "UrlItemId": {
            "type": "string",
            "description": "The widget item used for the URL action.",
            "format": "uuid",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "When true, the widget is hidden.",
            "nullable": true,
            "example": false
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of records shown in the widget.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "SortFieldId": {
            "type": "string",
            "description": "Field used to sort the widget's records.",
            "format": "uuid",
            "nullable": true,
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "SortDirection": {
            "$ref": "#/components/schemas/SortDirection"
          },
          "ActionId": {
            "type": "string",
            "description": "Action invoked from the widget.",
            "format": "uuid",
            "nullable": true
          },
          "Locale": {
            "type": "string",
            "description": "Locale used to format the widget's content.",
            "nullable": true,
            "example": "en-US"
          },
          "CompanyId": {
            "type": "string",
            "description": "Company used by default for the widget's data.",
            "format": "uuid",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "Optional description of the widget.",
            "nullable": true,
            "example": "Embeddable list of open sales orders."
          },
          "Theme": {
            "type": "string",
            "description": "Visual theme applied to the widget (e.g. light/dark).",
            "nullable": true,
            "example": "light"
          },
          "AiConnectorId": {
            "type": "string",
            "description": "AI connector used for AI widgets.",
            "format": "uuid",
            "nullable": true
          },
          "AiModelId": {
            "type": "string",
            "description": "AI model used for AI widgets.",
            "format": "uuid",
            "nullable": true
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "Tone modifier applied to AI widget responses.",
            "format": "uuid",
            "nullable": true
          },
          "AiPrompt": {
            "type": "string",
            "description": "Prompt text for AI widgets.",
            "nullable": true
          },
          "AiType": {
            "$ref": "#/components/schemas/WidgetAiType"
          },
          "FileFieldId": {
            "type": "string",
            "description": "Field holding the file content for a file widget.",
            "format": "uuid",
            "nullable": true
          },
          "FileNameFieldId": {
            "type": "string",
            "description": "Field holding the file name for a file widget.",
            "format": "uuid",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new widget. Each entry links an existing tag (TagId) or finds-or-creates one (Value).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating a widget — an embeddable list, favorite, or AI panel."
      },
      "QueryBuilderEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RedactionResponse": {
        "type": "object",
        "properties": {
          "RedactionId": {
            "type": "string",
            "description": "The unique identifier of the redaction.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The display name of the redaction.",
            "nullable": true,
            "example": "Mask Email Addresses"
          },
          "Description": {
            "type": "string",
            "description": "A description of what the redaction does.",
            "nullable": true,
            "example": "Hides all but the last four characters of a value."
          },
          "RedactionMethod": {
            "type": "integer",
            "description": "Integer code for the redaction method: 1 = All characters, 2 = First X characters, 3 = Last X characters, 4 = First and last X characters.",
            "format": "int32",
            "example": 1
          },
          "ReplacementType": {
            "type": "integer",
            "description": "Integer code for how matched characters are handled: 1 = Replace with the replacement character, 2 = Remove.",
            "format": "int32",
            "example": 1
          },
          "ReplacementCharacter": {
            "type": "string",
            "description": "The character used to replace redacted text when the replacement type is Replace.",
            "nullable": true,
            "example": "*"
          },
          "RedactionLength": {
            "type": "integer",
            "description": "The number of characters affected by the redaction method.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "SeparateWords": {
            "type": "boolean",
            "description": "Whether each word in the value is redacted separately.",
            "nullable": true,
            "example": true
          },
          "TreatPunctuationAsSpaces": {
            "type": "boolean",
            "description": "Whether punctuation is treated as spaces when separating words for redaction.",
            "nullable": true,
            "example": false
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the redaction was created.",
            "format": "date-time",
            "example": "2024-03-12"
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date the redaction was last modified.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-05-20"
          },
          "CreatedUserId": {
            "type": "string",
            "description": "The identifier of the user who created the redaction.",
            "format": "uuid",
            "example": "a1b2c3d4-e5f6-7890-ab12-cd34ef567890"
          },
          "ModifiedUserId": {
            "type": "string",
            "description": "The identifier of the user who last modified the redaction.",
            "format": "uuid",
            "nullable": true,
            "example": "b2c3d4e5-f6a7-8901-bc23-de45fa678901"
          }
        },
        "additionalProperties": false
      },
      "RequestMethod": {
        "enum": [
          "Inherit",
          "Get",
          "Post",
          "Put",
          "Patch",
          "Delete"
        ],
        "type": "string",
        "description": "The HTTP method used by a REST request.\n\n- `Inherit` — Inherit from the connector\n- `Get` — GET\n- `Post` — POST\n- `Put` — PUT\n- `Patch` — PATCH\n- `Delete` — DELETE\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Inherit": "Inherit from the connector",
          "Get": "GET",
          "Post": "POST",
          "Put": "PUT",
          "Patch": "PATCH",
          "Delete": "DELETE"
        }
      },
      "ResourceAccessResponse": {
        "type": "object",
        "properties": {
          "Users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleUserResponse"
            },
            "description": "Users that have access to the resource.",
            "nullable": true
          },
          "Teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleTeamResponse"
            },
            "description": "Teams that have access to the resource.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RestConnectorResponse": {
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ConnectorType": {
            "type": "integer",
            "description": "Integer code identifying the connector's data source type — the kind of system it connects to.",
            "format": "int32",
            "example": 1
          },
          "ConnectorSetupId": {
            "type": "string",
            "description": "Identifier of the connector setup (the template that defines this connector's type and the data it exposes).",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Name": {
            "type": "string",
            "description": "The connector's display name.",
            "nullable": true,
            "example": "Salesforce Production"
          },
          "DefaultCompanyId": {
            "type": "string",
            "description": "Identifier of the company used by default when querying this connector, if one is set.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "CompanyPrompt": {
            "type": "string",
            "description": "Singular label this connector uses for a \"company\" (some sources call it a database, organization, and so on).",
            "nullable": true,
            "example": "Company"
          },
          "CompanyPluralPrompt": {
            "type": "string",
            "description": "Plural form of the company label.",
            "nullable": true,
            "example": "Companies"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the connector was created.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-12"
          },
          "Locale": {
            "type": "string",
            "description": "Locale/culture the connector uses when formatting values.",
            "nullable": true,
            "example": "en-US"
          },
          "Currency": {
            "type": "string",
            "description": "Default currency code (ISO 4217) for monetary values returned by this connector.",
            "nullable": true,
            "example": "USD"
          },
          "NumberOfCompanies": {
            "type": "integer",
            "description": "Number of companies available in this connector. Populated only on endpoints that include counts.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "NumberOfGroups": {
            "type": "integer",
            "description": "Number of entity groups defined in this connector. Populated only on endpoints that include counts.",
            "format": "int32",
            "nullable": true,
            "example": 8
          },
          "ChildConnectors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConnectorResponse"
            },
            "description": "Child connectors nested under this connector when it is a parent; otherwise omitted.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related collections (entities, entity groups, and companies).",
            "nullable": true
          },
          "ConnectorRestId": {
            "type": "string",
            "description": "Unique identifier of the REST-specific settings for this connector.",
            "format": "uuid",
            "example": "2f8d4c6a-1b3e-4d5f-8a90-7c6b5a4d3e2f"
          },
          "AuthenticationMethod": {
            "type": "integer",
            "description": "Integer code for the authentication method: 0 = None, 1 = OAuth 1, 2 = OAuth 2, 3 = Basic, 4 = Exchange token, 5 = Bearer token, 6 = NTLM, 7 = API key.",
            "format": "int32",
            "example": 3
          },
          "PagingMethod": {
            "type": "integer",
            "description": "Integer code for how the API paginates results: 0 = None, 1 = Page count, 2 = Page offset, 3 = Next page number, 4 = Next page URL, 5 = Custom, 6 = Item count, 7 = Cursor.",
            "format": "int32",
            "example": 1
          },
          "DateMethod": {
            "type": "integer",
            "description": "Integer code for how dates are formatted in requests and responses: 1 = ISO 8601, 2 = Epoch seconds, 3 = Epoch milliseconds, 4 = Custom.",
            "format": "int32",
            "example": 1
          },
          "CustomDateFormat": {
            "type": "string",
            "description": "Custom date format string used when the date method is Custom.",
            "nullable": true,
            "example": "yyyy-MM-ddTHH:mm:ss"
          },
          "RequestMethod": {
            "type": "integer",
            "description": "Integer code for the default HTTP request method: 0 = Inherit, 1 = GET, 2 = POST, 3 = PUT, 4 = PATCH, 5 = DELETE.",
            "format": "int32",
            "example": 1
          },
          "NextPagePath": {
            "type": "string",
            "description": "Path within the response that holds the URL of the next page, when paging by next page URL.",
            "nullable": true,
            "example": "links.next"
          },
          "PageCountPath": {
            "type": "string",
            "description": "Path within the response that holds the total page count, when paging by page count.",
            "nullable": true,
            "example": "meta.totalPages"
          },
          "PageParameter": {
            "type": "string",
            "description": "Name of the request parameter used to specify the page number.",
            "nullable": true,
            "example": "page"
          },
          "PageOffsetPath": {
            "type": "string",
            "description": "Path within the response that holds the current offset, when paging by page offset.",
            "nullable": true,
            "example": "meta.offset"
          },
          "PageOffsetParameter": {
            "type": "string",
            "description": "Name of the request parameter used to specify the record offset.",
            "nullable": true,
            "example": "offset"
          },
          "PageSize": {
            "type": "integer",
            "description": "Number of records requested per page.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "PageSizeParameter": {
            "type": "string",
            "description": "Name of the request parameter used to specify the page size.",
            "nullable": true,
            "example": "pageSize"
          },
          "ResponseType": {
            "type": "integer",
            "description": "Integer code for the expected response format: 1 = JSON, 2 = XML.",
            "format": "int32",
            "example": 1
          },
          "BodyType": {
            "type": "integer",
            "description": "Integer code for the request body format: 0 = Inherit, 1 = JSON, 2 = XML, 3 = Text, 4 = URL-encoded form.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "RetryOnError": {
            "type": "boolean",
            "description": "Whether failed requests are automatically retried.",
            "nullable": true,
            "example": true
          },
          "MaxRetries": {
            "type": "integer",
            "description": "Maximum number of retry attempts when retry on error is enabled.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "RetrySleepTime": {
            "type": "integer",
            "description": "Number of milliseconds to wait between retry attempts.",
            "format": "int32",
            "nullable": true,
            "example": 1000
          },
          "HasMorePagesPath": {
            "type": "string",
            "description": "Path within the response indicating whether more pages are available.",
            "nullable": true,
            "example": "meta.hasMore"
          },
          "PageCountPathType": {
            "type": "integer",
            "description": "Integer code for where the page-count value is read from: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "PageOffsetPathType": {
            "type": "integer",
            "description": "Integer code for where the page-offset value is read from: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "HasMorePagesPathType": {
            "type": "integer",
            "description": "Integer code for where the has-more-pages value is read from: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "PageParameterType": {
            "type": "integer",
            "description": "Integer code for where the page-number parameter is sent: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "NextPagePathType": {
            "type": "integer",
            "description": "Integer code for where the next-page value is read from: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 3
          },
          "PageOffsetParameterType": {
            "type": "integer",
            "description": "Integer code for where the page-offset parameter is sent: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "PageSizeParameterType": {
            "type": "integer",
            "description": "Integer code for where the page-size parameter is sent: 1 = Header, 2 = URL parameter, 3 = Body.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Description": {
            "type": "string",
            "description": "Description of the connector.",
            "nullable": true,
            "example": "Connects to the Acme REST API."
          },
          "MaxConcurrentRequests": {
            "type": "integer",
            "description": "Maximum number of requests allowed to run concurrently against the API.",
            "format": "int32",
            "nullable": true,
            "example": 5
          }
        },
        "additionalProperties": false
      },
      "RestEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          },
          "EntityRestId": {
            "type": "string",
            "description": "Unique identifier of the REST-specific settings for this entity.",
            "format": "uuid",
            "example": "8a1b2c3d-4e5f-4061-9788-9a0b1c2d3e4f"
          },
          "Endpoint": {
            "type": "string",
            "description": "Relative URL endpoint, appended to the connector's base URL, that this entity reads from.",
            "nullable": true,
            "example": "/api/v2/customers"
          },
          "RequestMethod": {
            "type": "integer",
            "description": "Integer code for the HTTP request method: 0 = Inherit from connector, 1 = GET, 2 = POST, 3 = PUT, 4 = PATCH, 5 = DELETE.",
            "format": "int32",
            "example": 1
          },
          "BodyType": {
            "type": "integer",
            "description": "Integer code for the request body format: 0 = Inherit from connector, 1 = JSON, 2 = XML, 3 = Text, 4 = URL-encoded form.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Body": {
            "type": "string",
            "description": "Request body template sent with the call, when the request method uses a body.",
            "nullable": true,
            "example": "{ \"filter\": \"active\" }"
          },
          "ReplaceParameters": {
            "type": "boolean",
            "description": "Whether parameters defined on the connector are replaced rather than merged for this entity.",
            "example": false
          },
          "ReplaceHeaders": {
            "type": "boolean",
            "description": "Whether headers defined on the connector are replaced rather than merged for this entity.",
            "example": false
          },
          "DetailOnly": {
            "type": "boolean",
            "description": "Whether the entity can only be used to load a single record's detail rather than listed.",
            "nullable": true,
            "example": false
          },
          "ParentEntity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "IgnoreErrors": {
            "type": "boolean",
            "description": "Whether errors returned by the REST call are ignored rather than failing the request.",
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false
      },
      "RestrictionType": {
        "enum": [
          "DoesNotEqual",
          "Equals",
          "GreaterThan",
          "LessThan",
          "GreaterThanOrEqualTo",
          "LessThanOrEqualTo",
          "Contains",
          "StartsWith",
          "EndsWith",
          "DoesNotContain",
          "DoesNotStartWith",
          "DoesNotEndWith",
          "Between",
          "NotBetween",
          "OneOf",
          "NotOneOf",
          "Null",
          "NotNull"
        ],
        "type": "string",
        "description": "The comparison operator a restriction/filter applies.\n\n- `DoesNotEqual` — Does not equal\n- `Equals` — Equals\n- `GreaterThan` — Greater than\n- `LessThan` — Less than\n- `GreaterThanOrEqualTo` — Greater than or equal to\n- `LessThanOrEqualTo` — Less than or equal to\n- `Contains` — Contains\n- `StartsWith` — Starts with\n- `EndsWith` — Ends with\n- `DoesNotContain` — Does not contain\n- `DoesNotStartWith` — Does not start with\n- `DoesNotEndWith` — Does not end with\n- `Between` — Between\n- `NotBetween` — Not between\n- `OneOf` — One of\n- `NotOneOf` — Not one of\n- `Null` — Is null\n- `NotNull` — Is not null\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "DoesNotEqual": "Does not equal",
          "Equals": "Equals",
          "GreaterThan": "Greater than",
          "LessThan": "Less than",
          "GreaterThanOrEqualTo": "Greater than or equal to",
          "LessThanOrEqualTo": "Less than or equal to",
          "Contains": "Contains",
          "StartsWith": "Starts with",
          "EndsWith": "Ends with",
          "DoesNotContain": "Does not contain",
          "DoesNotStartWith": "Does not start with",
          "DoesNotEndWith": "Does not end with",
          "Between": "Between",
          "NotBetween": "Not between",
          "OneOf": "One of",
          "NotOneOf": "Not one of",
          "Null": "Is null",
          "NotNull": "Is not null"
        }
      },
      "RestrictionTypeResponse": {
        "type": "object",
        "properties": {
          "Type": {
            "type": "integer",
            "description": "Integer code for the comparison operator: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "Display name of the comparison operator.",
            "nullable": true,
            "example": "Equals"
          },
          "Values": {
            "type": "integer",
            "description": "Number of values the operator expects (for example two for Between, zero for Is null).",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "RestrictionValueType": {
        "enum": [
          "Constant",
          "Field",
          "DateTimeValue",
          "Variable",
          "ParentField",
          "FiscalPeriod",
          "FiscalYear",
          "Parameter",
          "Default"
        ],
        "type": "string"
      },
      "RunQueryV3Conjunctive": {
        "enum": [
          "None",
          "And",
          "Or"
        ],
        "type": "string"
      },
      "RunQueryV3Request": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity (list/table) to query. Required.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Columns": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Field ids to return as columns. When omitted, the entity's default columns are used.",
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Company ids to scope the query to. When omitted, all accessible companies are queried.",
            "nullable": true
          },
          "Restrictions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunQueryV3Restriction"
            },
            "description": "Filter conditions (the WHERE clause) applied to the query.",
            "nullable": true
          },
          "Variables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunQueryV3Variable"
            },
            "description": "Values supplied for the entity's query variables.",
            "nullable": true
          },
          "Sorts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunQueryV3Sort"
            },
            "description": "Sort order (the ORDER BY clause) applied to the results.",
            "nullable": true
          },
          "MaxRecords": {
            "type": "integer",
            "description": "Maximum number of rows to return.",
            "format": "int32",
            "nullable": true,
            "example": 100
          },
          "Format": {
            "type": "integer",
            "description": "Output-format code for the response (e.g. JSON, CSV).",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "A request to run a query against an entity and return matching rows."
      },
      "RunQueryV3Restriction": {
        "type": "object",
        "properties": {
          "Conjunctive": {
            "$ref": "#/components/schemas/RunQueryV3Conjunctive"
          },
          "FieldId": {
            "type": "string",
            "description": "The field being filtered.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Type": {
            "$ref": "#/components/schemas/RunQueryV3RestrictionType"
          },
          "Value": {
            "$ref": "#/components/schemas/RunQueryV3RestrictionValue"
          },
          "Values": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RunQueryV3RestrictionValue"
            },
            "description": "Multiple values to compare against. Use for multi-value operators (between, one-of, etc.).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single filter condition applied to a query (one clause of the WHERE)."
      },
      "RunQueryV3RestrictionType": {
        "enum": [
          "NotEqual",
          "Equal",
          "GreaterThan",
          "LessThan",
          "GreaterThanOrEqual",
          "LessThanOrEqual",
          "Contains",
          "StartsWith",
          "EndsWith",
          "DoesNotContain",
          "DoesNotStartWith",
          "DoesNotEndWith",
          "Between",
          "NotBetween",
          "OneOf",
          "NotOneOf",
          "Null",
          "NotNull"
        ],
        "type": "string"
      },
      "RunQueryV3RestrictionValue": {
        "type": "object",
        "properties": {
          "Type": {
            "$ref": "#/components/schemas/RunQueryV3ValueType"
          },
          "Value": {
            "type": "string",
            "description": "The value itself. For `constant` a literal; for `field`/`variable`/fiscal types a GUID;\r\n            for `date-value` a relative date token.",
            "nullable": true,
            "example": "Open"
          }
        },
        "additionalProperties": false,
        "description": "A value used in a restriction, interpreted according to its Popdock.WebApi.Models.Request.QueryV3.RunQueryV3RestrictionValue.Type."
      },
      "RunQueryV3Sort": {
        "type": "object",
        "properties": {
          "FieldId": {
            "type": "string",
            "description": "The field to sort by.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Direction": {
            "$ref": "#/components/schemas/RunQueryV3SortDirection"
          }
        },
        "additionalProperties": false,
        "description": "A single sort instruction (one clause of the ORDER BY)."
      },
      "RunQueryV3SortDirection": {
        "enum": [
          "Ascending",
          "Descending"
        ],
        "type": "string"
      },
      "RunQueryV3ValueType": {
        "enum": [
          "Constant",
          "Field",
          "Calculation",
          "Date",
          "Variable",
          "FiscalPeriod",
          "FiscalYear"
        ],
        "type": "string"
      },
      "RunQueryV3Variable": {
        "type": "object",
        "properties": {
          "VariableId": {
            "type": "string",
            "description": "The entity variable being supplied.",
            "format": "uuid",
            "example": "2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d"
          },
          "Type": {
            "$ref": "#/components/schemas/RunQueryV3ValueType"
          },
          "Value": {
            "type": "string",
            "description": "The variable value, interpreted according to Popdock.WebApi.Models.Request.QueryV3.RunQueryV3Variable.Type.",
            "nullable": true,
            "example": "2026"
          }
        },
        "additionalProperties": false,
        "description": "A value supplied for one of the entity's query variables."
      },
      "ScheduledJobResponse": {
        "type": "object",
        "properties": {
          "ScheduledJobId": {
            "type": "string",
            "description": "The scheduled job's unique identifier.",
            "format": "uuid",
            "example": "4d6f8a2b-1c3e-4f5a-9b7d-0e1f2a3b4c5d"
          },
          "Name": {
            "type": "string",
            "description": "The scheduled job's display name.",
            "nullable": true,
            "example": "Daily Sales Export"
          },
          "JobType": {
            "type": "integer",
            "description": "Integer code for the job type: 1 = Send email, 2 = Export.",
            "format": "int32",
            "example": 1
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector the job runs against, if applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "EntityId": {
            "type": "string",
            "description": "Identifier of the entity the job runs against, if applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "FavoriteId": {
            "type": "string",
            "description": "Identifier of the saved favorite (query/view) the job runs, if applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "ActionId": {
            "type": "string",
            "description": "Identifier of the action the job runs, if applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "b2c3d4e5-f6a7-4890-bcde-f01234567890"
          },
          "DestinationConnectorId": {
            "type": "string",
            "description": "Identifier of the connector files are exported to, for export jobs.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-cdef-012345678901"
          },
          "ConnectorName": {
            "type": "string",
            "description": "Display name of the connector the job runs against. Populated only on endpoints that include names.",
            "nullable": true,
            "example": "Salesforce Production"
          },
          "EntityName": {
            "type": "string",
            "description": "Display name of the entity the job runs against. Populated only on endpoints that include names.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "FavoriteName": {
            "type": "string",
            "description": "Display name of the favorite the job runs. Populated only on endpoints that include names.",
            "nullable": true,
            "example": "Open Orders"
          },
          "ScheduleType": {
            "type": "integer",
            "description": "Integer code for the recurrence pattern: 1 = Every day, 2 = Every N days, 3 = Specific days of the week, 4 = Specific days of the month, 5 = Last day of the month, 6 = Every Nth day of week of the month.",
            "format": "int32",
            "example": 3
          },
          "Days": {
            "type": "integer",
            "description": "The interval in days, used when the schedule type is Every N days.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Ordinal": {
            "type": "integer",
            "description": "The ordinal week of the month (for example 1 for first, 2 for second), used when the schedule type is Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "DayOfWeek": {
            "type": "integer",
            "description": "Day of the week as an integer where 0 = Sunday through 6 = Saturday, used when the schedule type is Every Nth day of week of the month.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Hour": {
            "type": "integer",
            "description": "Hour of the day the job runs, in 24-hour time (0 to 23).",
            "format": "int32",
            "example": 9
          },
          "Minute": {
            "type": "integer",
            "description": "Minute of the hour the job runs (0 to 59).",
            "format": "int32",
            "example": 30
          },
          "Timezone": {
            "type": "string",
            "description": "IANA time zone the run time is interpreted in.",
            "nullable": true,
            "example": "America/New_York"
          },
          "Items": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "The specific days the job runs (days of the week or days of the month), depending on the schedule type.",
            "nullable": true
          },
          "Companies": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Identifiers of the companies the job runs against.",
            "nullable": true
          },
          "CompanyNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Display names of the companies the job runs against.",
            "nullable": true
          },
          "Email": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Email addresses the job's output is sent to, for email jobs.",
            "nullable": true
          },
          "Subject": {
            "type": "string",
            "description": "Subject line of the email, for email jobs.",
            "nullable": true,
            "example": "Your daily sales report"
          },
          "Body": {
            "type": "string",
            "description": "Body content of the email, for email jobs.",
            "nullable": true,
            "example": "Please find today's sales report attached."
          },
          "Format": {
            "type": "integer",
            "description": "Integer code for the output file format, used by export jobs: 1 = Excel, 2 = CSV.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Filename": {
            "type": "string",
            "description": "Name of the generated output file.",
            "nullable": true,
            "example": "sales-report.csv"
          },
          "Path": {
            "type": "string",
            "description": "Destination folder path the file is written to, for export jobs.",
            "nullable": true,
            "example": "/exports/sales"
          },
          "CreateIfNotExists": {
            "type": "boolean",
            "description": "Whether the destination path is created if it does not already exist.",
            "nullable": true,
            "example": true
          },
          "FileNameConflictBehavior": {
            "type": "integer",
            "description": "Integer code for how name clashes are handled when writing the file: 0 = Fail, 1 = Rename, 2 = Replace.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the job's status: 1 = Active, 2 = Inactive.",
            "format": "int32",
            "example": 1
          },
          "NextRunAt": {
            "type": "string",
            "description": "Date and time the job is next scheduled to run.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-12"
          },
          "LastRunAt": {
            "type": "string",
            "description": "Date and time the job last ran.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-11"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the job was created.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-03-01"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related actions for this job (such as viewing it and running it).",
            "nullable": true
          },
          "Time": {
            "type": "string",
            "description": "Time of day to run, in \"HH:mm\" 24-hour format.",
            "nullable": true,
            "readOnly": true,
            "example": "09:30"
          },
          "ScheduleDescription": {
            "type": "string",
            "description": "Human-readable description of the schedule, for example \"Every Monday, Wednesday at 9:30 AM\".",
            "nullable": true,
            "readOnly": true,
            "example": "Every Monday, Wednesday at 9:30 AM"
          }
        },
        "additionalProperties": false
      },
      "SecurityRoleResponse": {
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "Display name of the security role.",
            "nullable": true,
            "example": "Administrator"
          },
          "Description": {
            "type": "string",
            "description": "Description of what the security role grants.",
            "nullable": true,
            "example": "Full access to all features and settings."
          },
          "Permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The feature permissions granted by this role, sorted alphabetically.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SecurityRolesResponse": {
        "type": "object",
        "properties": {
          "UserRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityRoleResponse"
            },
            "description": "The security roles that can be assigned at the user level, with their permissions.",
            "nullable": true
          },
          "ConnectorRoles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SecurityRoleResponse"
            },
            "description": "The security roles that can be assigned at the connector level, with their permissions.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SharedAccount": {
        "type": "object",
        "properties": {
          "AccountId": {
            "type": "string",
            "format": "uuid"
          },
          "Name": {
            "type": "string",
            "nullable": true
          },
          "Country": {
            "type": "string",
            "nullable": true
          },
          "Status": {
            "type": "string",
            "nullable": true
          },
          "Created": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "Modified": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "EQA": {
            "type": "boolean",
            "nullable": true
          },
          "Currency": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SharedInstructionResponse": {
        "type": "object",
        "properties": {
          "SharedInstructionId": {
            "type": "string",
            "description": "The shared instruction's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The shared instruction's display name.",
            "nullable": true,
            "example": "Standard tone guidance"
          },
          "Description": {
            "type": "string",
            "description": "A description of the shared instruction.",
            "nullable": true,
            "example": "Reusable instructions for summarizing sales data."
          },
          "Content": {
            "type": "string",
            "description": "The instruction text that is shared and reused.",
            "nullable": true,
            "example": "Always respond using a concise, professional tone."
          }
        },
        "additionalProperties": false
      },
      "SharedUser": {
        "type": "object",
        "properties": {
          "UserId": {
            "type": "string",
            "format": "uuid"
          },
          "FirstName": {
            "type": "string",
            "nullable": true
          },
          "LastName": {
            "type": "string",
            "nullable": true
          },
          "Email": {
            "type": "string",
            "nullable": true
          },
          "Status": {
            "type": "string",
            "nullable": true
          },
          "Created": {
            "type": "string",
            "format": "date-time"
          },
          "Modified": {
            "type": "string",
            "format": "date-time"
          },
          "EmailVerified": {
            "type": "boolean"
          },
          "ApiUser": {
            "type": "boolean",
            "nullable": true
          },
          "ApiUserName": {
            "type": "string",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "DisplayName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "DisplayEmail": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "SharingType": {
        "enum": [
          "User",
          "Team"
        ],
        "type": "string",
        "description": "Whether a favorite is shared with an individual user or a whole team.\n\n- `User` — Shared with a user\n- `Team` — Shared with a team\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "User": "Shared with a user",
          "Team": "Shared with a team"
        }
      },
      "SidekickPromptGroupResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptGroupId": {
            "type": "string",
            "description": "The Sidekick prompt group's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ParentSidekickPromptGroupId": {
            "type": "string",
            "description": "The parent group's identifier, when this group is nested. Null for a top-level group.",
            "format": "uuid",
            "nullable": true,
            "example": "6a3d9b2e-1c4f-4a8b-9e7d-2f5c8a1b3d6e"
          },
          "Name": {
            "type": "string",
            "description": "The Sidekick prompt group's display name.",
            "nullable": true,
            "example": "Sales prompts"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the group was created.",
            "format": "date-time",
            "example": "2024-03-12"
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date the group was last modified. Null if it has not been modified since creation.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-05-20"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptMcpToolResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptMcpToolId": {
            "type": "string",
            "description": "The unique identifier of the link between the Sidekick prompt and the MCP tool.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptId": {
            "type": "string",
            "description": "The Sidekick prompt that the MCP tool is attached to.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool made available to the Sidekick prompt.",
            "format": "uuid",
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links related to this Sidekick prompt MCP tool, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptMessageResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptMessageId": {
            "type": "string",
            "description": "The Sidekick prompt message's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptId": {
            "type": "string",
            "description": "The Sidekick prompt this message belongs to.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Order": {
            "type": "integer",
            "description": "The position of this message in the prompt's message sequence.",
            "format": "int32",
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The message's display name.",
            "nullable": true,
            "example": "System instructions"
          },
          "Message": {
            "type": "string",
            "description": "The message text sent as part of the prompt.",
            "nullable": true,
            "example": "Summarize the selected records for the user."
          },
          "VisibilityParameterId": {
            "type": "string",
            "description": "A parameter whose value controls this message's visibility. Null when visibility is not tied to a parameter.",
            "format": "uuid",
            "nullable": true,
            "example": "1f9b7e1a-2c3d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "VisibilityFieldTypes": {
            "type": "string",
            "description": "A comma-separated list of the visibility parameter's field-type values that reveal this message.",
            "nullable": true,
            "example": "1,2"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptMessageRestrictionResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptMessageRestrictionId": {
            "type": "string",
            "description": "The prompt message restriction's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptMessageId": {
            "type": "string",
            "description": "The prompt message this restriction applies to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "TargetType": {
            "type": "integer",
            "description": "Integer code for what the restriction targets, such as a prompt parameter or a page value.",
            "format": "int32",
            "example": 1
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The prompt parameter the restriction is evaluated against, when targeting a parameter.",
            "format": "uuid",
            "nullable": true,
            "example": "1f9b7e1a-2c3d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "PageValueKey": {
            "type": "string",
            "description": "The page value key the restriction is evaluated against, when targeting a page value.",
            "nullable": true,
            "example": "SelectedCustomerId"
          },
          "RestrictionType": {
            "type": "integer",
            "description": "Integer code for the comparison operator the restriction applies: 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null.",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptMessageRestrictionValueResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptMessageRestrictionValueId": {
            "type": "string",
            "description": "The restriction value's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptMessageRestrictionId": {
            "type": "string",
            "description": "The message restriction this value belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The position of this value within the restriction.",
            "format": "int32",
            "example": 1
          },
          "ValueType": {
            "type": "integer",
            "description": "Integer code for how the value is sourced (for example a constant, a parameter, or a page value).",
            "format": "int32",
            "example": 1
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when the value type is a constant.",
            "nullable": true,
            "example": "Active"
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter supplying the value, when the value type is a parameter.",
            "format": "uuid",
            "nullable": true,
            "example": "5a8b1c20-1234-4d3e-9a0c-0305e82c3399"
          },
          "PageValueKey": {
            "type": "string",
            "description": "The page value key supplying the value, when the value type is a page value.",
            "nullable": true,
            "example": "selectedRecordId"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptPageFilterResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptPageFilterId": {
            "type": "string",
            "description": "The page filter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page this filter belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "FilterKey": {
            "type": "string",
            "description": "The key identifying which page attribute the filter matches on.",
            "nullable": true,
            "example": "status"
          },
          "FilterValue": {
            "type": "string",
            "description": "The value the filter key must match for the page to apply.",
            "nullable": true,
            "example": "Open"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptPageParameterMappingResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptPageParameterMappingId": {
            "type": "string",
            "description": "The parameter mapping's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page this mapping belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter whose value is supplied by this mapping.",
            "format": "uuid",
            "example": "5a8b1c20-1234-4d3e-9a0c-0305e82c3399"
          },
          "MappingType": {
            "type": "integer",
            "description": "Integer code for how the value is sourced (for example an attachment field, a constant, or a page value).",
            "format": "int32",
            "example": 1
          },
          "AttachmentKey": {
            "type": "string",
            "description": "The attachment key the value is read from, when sourcing from an attachment.",
            "nullable": true,
            "example": "selectedRecord"
          },
          "FieldName": {
            "type": "string",
            "description": "The field name the value is read from, when sourcing from an attachment field.",
            "nullable": true,
            "example": "CustomerId"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when sourcing from a constant.",
            "nullable": true,
            "example": "USD"
          },
          "PageValueKey": {
            "type": "string",
            "description": "The page value key the value is read from, when sourcing from a page value.",
            "nullable": true,
            "example": "selectedRecordId"
          },
          "IsDefault": {
            "type": "boolean",
            "description": "When true the resolved value pre-fills the question but stays visible and editable; when false the parameter is hidden and the value is forced.",
            "example": false
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptPageRefreshAttachmentResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptPageRefreshAttachmentId": {
            "type": "string",
            "description": "The refresh attachment's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page this refresh attachment belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "AttachmentKey": {
            "type": "string",
            "description": "The attachment key that is refreshed after a tool runs.",
            "nullable": true,
            "example": "selectedRecord"
          },
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool that triggers the refresh. Null refreshes after any tool runs; when set, refreshes only after this specific tool runs.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptPageResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt this page belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "PageRoute": {
            "type": "string",
            "description": "The application route on which the page is shown.",
            "nullable": true,
            "example": "/customers"
          },
          "PageTab": {
            "type": "string",
            "description": "The tab within the page on which the prompt appears.",
            "nullable": true,
            "example": "Overview"
          },
          "IsPinned": {
            "type": "boolean",
            "description": "Whether the page is pinned.",
            "example": true
          },
          "IsPerRecord": {
            "type": "boolean",
            "description": "Whether the page applies per record rather than once for the page.",
            "example": false
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptParameterResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt this parameter belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Order": {
            "type": "integer",
            "description": "Sort position within the prompt.",
            "format": "int32",
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The parameter's machine name. Unique within the prompt.",
            "nullable": true,
            "example": "region"
          },
          "Label": {
            "type": "string",
            "description": "The label shown to the user when answering the questionnaire.",
            "nullable": true,
            "example": "Region"
          },
          "Subtitle": {
            "type": "string",
            "description": "An optional subtitle shown under the label.",
            "nullable": true,
            "example": "Select the sales region"
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the input.",
            "nullable": true,
            "example": "Choose a region"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the parameter type.",
            "format": "int32",
            "example": 1
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the underlying field type, for typed inputs. Uses the shared field-type codes returned by the field-type lookup endpoint (for example 1 is String, 2 is Date, 4 is Number).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ListType": {
            "type": "integer",
            "description": "Integer code for the list type, when the parameter is a list.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ListResourceType": {
            "type": "integer",
            "description": "Integer code for the resource type backing a resource-driven list.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ParentParameterId": {
            "type": "string",
            "description": "A parent parameter, when this parameter is nested under another.",
            "format": "uuid",
            "nullable": true,
            "example": "5a8b1c20-1234-4d3e-9a0c-0305e82c3399"
          },
          "AllowMultiples": {
            "type": "boolean",
            "description": "Whether the user may select multiple values.",
            "nullable": true,
            "example": false
          },
          "ShowOtherOption": {
            "type": "boolean",
            "description": "Whether to offer a free-text \"other\" option.",
            "nullable": true,
            "example": false
          },
          "AiConnectorId": {
            "type": "string",
            "description": "The connector used for AI-backed parameters.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "AiModelId": {
            "type": "string",
            "description": "The AI model used for AI-backed parameters.",
            "format": "uuid",
            "nullable": true,
            "example": "1d3a8e2b-9f44-4c1a-8b77-2e6f0a5c1d99"
          },
          "Script": {
            "type": "string",
            "description": "A script used to compute or validate the value.",
            "nullable": true,
            "example": "return value.toUpperCase();"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be answered.",
            "nullable": true,
            "example": true
          },
          "ValidCharacterType": {
            "type": "integer",
            "description": "Integer code for the allowed character class used for text validation.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "RegexPattern": {
            "type": "string",
            "description": "A regex the value must match.",
            "nullable": true,
            "example": "^[A-Z]{2,3}$"
          },
          "MaxCharacters": {
            "type": "integer",
            "description": "The maximum number of characters allowed.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "ResourceFilter": {
            "type": "string",
            "description": "An optional filter applied to the parameter's resource list.",
            "nullable": true,
            "example": "IsActive eq true"
          },
          "VisibilityParameterId": {
            "type": "string",
            "description": "A parameter whose value controls this parameter's visibility.",
            "format": "uuid",
            "nullable": true,
            "example": "2c1f9a44-5b6d-4e2f-9a0c-0305e82c3322"
          },
          "VisibilityFieldTypes": {
            "type": "string",
            "description": "The field-type values of the visibility parameter that reveal this parameter.",
            "nullable": true,
            "example": "1,2"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptParameterValueMappingResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptParameterValueMappingId": {
            "type": "string",
            "description": "The mapping's unique identifier.",
            "format": "uuid",
            "example": "9b2e4c1a-7d63-4f08-b1e2-5a8c3d2f9e10"
          },
          "SidekickPromptParameterValueId": {
            "type": "string",
            "description": "The parameter value this mapping applies to.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ChildSidekickPromptParameterId": {
            "type": "string",
            "description": "The dependent child parameter controlled by the parent value.",
            "format": "uuid",
            "example": "c56a4180-65aa-42ec-a945-5fd21dec0538"
          },
          "ParentSidekickPromptParameterId": {
            "type": "string",
            "description": "The parent parameter whose selected value drives the child parameter.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptParameterValueResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptParameterValueId": {
            "type": "string",
            "description": "The parameter value's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter this value belongs to.",
            "format": "uuid",
            "example": "c56a4180-65aa-42ec-a945-5fd21dec0538"
          },
          "Value": {
            "type": "string",
            "description": "The underlying value submitted when this option is selected.",
            "nullable": true,
            "example": "open"
          },
          "Label": {
            "type": "string",
            "description": "The display label shown for this value.",
            "nullable": true,
            "example": "Open opportunities"
          },
          "Icon": {
            "type": "string",
            "description": "The icon shown alongside this value.",
            "nullable": true,
            "example": "fa-folder-open"
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text associated with this value.",
            "nullable": true,
            "example": "Show me all open opportunities"
          },
          "Order": {
            "type": "integer",
            "description": "The display order of this value within the parameter.",
            "format": "int32",
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "SidekickPromptResponse": {
        "type": "object",
        "properties": {
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The prompt's display name.",
            "nullable": true,
            "example": "Summarize open opportunities"
          },
          "Subtitle": {
            "type": "string",
            "description": "A short subtitle shown under the name.",
            "nullable": true,
            "example": "Across all sales reps"
          },
          "Description": {
            "type": "string",
            "description": "A longer description of what the prompt does.",
            "nullable": true,
            "example": "Summarizes all open opportunities for the selected sales rep."
          },
          "SlashCommand": {
            "type": "string",
            "description": "The slash command that invokes the prompt, without the leading slash.",
            "nullable": true,
            "example": "summarize-opps"
          },
          "Status": {
            "type": "integer",
            "description": "Integer status code controlling whether the prompt is available for use. The value 1 indicates active (the default assigned on create); other codes are not enumerated.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Integer code categorizing the prompt's behavior. Defaults to 1 on create; the set of code values is not enumerated.",
            "format": "int32",
            "example": 1
          },
          "SidekickPromptGroupId": {
            "type": "string",
            "description": "The group the prompt belongs to, or null when ungrouped.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date the prompt was created.",
            "format": "date-time",
            "example": "2024-03-12"
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date the prompt was last modified, or null if never modified.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-05-20"
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptParameterResponse"
            },
            "description": "The prompt's parameters. Populated only when requested via the expand query.",
            "nullable": true
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptMessageResponse"
            },
            "description": "The prompt's messages. Populated only when requested via the expand query.",
            "nullable": true
          },
          "Pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptPageResponse"
            },
            "description": "The prompt's pages. Populated only when requested via the expand query.",
            "nullable": true
          },
          "McpTools": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SidekickPromptMcpToolResponse"
            },
            "description": "The MCP tools associated with the prompt. Populated only when requested via the expand query.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SimpleAccountResponse": {
        "type": "object",
        "properties": {
          "AccountId": {
            "type": "string",
            "description": "The account's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The account's display name.",
            "nullable": true,
            "example": "Acme Corporation"
          }
        },
        "additionalProperties": false
      },
      "SimpleActionResponse": {
        "type": "object",
        "properties": {
          "ActionId": {
            "type": "string",
            "description": "The action's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The action's display name.",
            "nullable": true,
            "example": "Create Sales Order"
          },
          "Description": {
            "type": "string",
            "description": "A description of what the action does.",
            "nullable": true,
            "example": "Creates a new sales order for the selected customer."
          },
          "Icon": {
            "type": "string",
            "description": "The icon shown for the action.",
            "nullable": true,
            "example": "fa-plus"
          }
        },
        "additionalProperties": false
      },
      "SimpleCompanyResponse": {
        "type": "object",
        "properties": {
          "CompanyId": {
            "type": "string",
            "description": "The company's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The company's display name.",
            "nullable": true,
            "example": "Acme Corporation"
          }
        },
        "additionalProperties": false
      },
      "SimpleConnectorResponse": {
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The connector's display name.",
            "nullable": true,
            "example": "Salesforce Production"
          },
          "Icon": {
            "type": "string",
            "description": "The connector's icon, when set, for display in clients.",
            "nullable": true,
            "example": "salesforce"
          }
        },
        "additionalProperties": false
      },
      "SimpleEndpointResponse": {
        "type": "object",
        "properties": {
          "EndpointId": {
            "type": "string",
            "description": "The endpoint's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Endpoint": {
            "type": "string",
            "description": "The endpoint's URL.",
            "nullable": true,
            "example": "api/v3/connectors/sales/lists/orders"
          }
        },
        "additionalProperties": false
      },
      "SimpleEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Name": {
            "type": "string",
            "description": "The entity's name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ItemName": {
            "type": "string",
            "description": "The plural label used for the entity's records (for example, \"Orders\").",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "The singular label used for an individual record of the entity (for example, \"Order\").",
            "nullable": true,
            "example": "Order"
          }
        },
        "additionalProperties": false
      },
      "SimpleFavoriteResponse": {
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite's unique identifier.",
            "format": "uuid",
            "example": "c9bf9e57-1685-4c89-bafb-ff5af830be8a"
          },
          "Name": {
            "type": "string",
            "description": "The favorite's display name.",
            "nullable": true,
            "example": "Open Orders This Month"
          },
          "ViewType": {
            "type": "integer",
            "description": "Integer code for how the favorite is displayed: 0 = List, 1 = Chart, 2 = Pivot, 3 = Spreadsheet, 4 = Board, 5 = Calendar, 6 = Text, 7 = Map, 8 = Image, 9 = Card, 11 = Summary, 12 = iFrame, 14 = Singleton, 15 = Shipping, 20 = Search, 22 = Action form, 23 = AI chat, 24 = File preview, 25 = Markdown.",
            "format": "int32",
            "nullable": true,
            "example": 1
          }
        },
        "additionalProperties": false
      },
      "SimpleFieldListItem": {
        "type": "object",
        "properties": {
          "Index": {
            "type": "integer",
            "description": "The zero-based position of this item within the field's list of values.",
            "format": "int64",
            "nullable": true,
            "example": 0
          },
          "Key": {
            "type": "string",
            "description": "The stored value of the list item (the underlying code).",
            "nullable": true,
            "example": "OPEN"
          },
          "Value": {
            "type": "string",
            "description": "The display value shown for the list item.",
            "nullable": true,
            "example": "Open"
          }
        },
        "additionalProperties": false
      },
      "SimpleFieldResponse": {
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The field's unique identifier.",
            "format": "uuid",
            "example": "7d9f8e2a-1c3b-4a6d-8f0e-2b5c7a9d1e3f"
          },
          "Name": {
            "type": "string",
            "description": "The field's name.",
            "nullable": true,
            "example": "OrderStatus"
          },
          "DisplayName": {
            "type": "string",
            "description": "The field's display name shown to users.",
            "nullable": true,
            "example": "Order Status"
          },
          "Type": {
            "type": "string",
            "description": "The field's data type, given as the string form of the underlying field-type code: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 11 = Email, 12 = Website, 13 = Image, 16 = Color, 18 = Text, 19 = GUID, 20 = Icon, 21 = Duration, 24 = File, 25 = Dimension.",
            "nullable": true,
            "example": "1"
          },
          "ListItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SimpleFieldListItem"
            },
            "description": "The predefined list values available for this field. Populated only for fields backed by a value list.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SimpleMcpClientResponse": {
        "type": "object",
        "properties": {
          "McpClientId": {
            "type": "string",
            "description": "The MCP client's unique identifier.",
            "format": "uuid",
            "example": "1e7c4a90-6f2b-4d3e-8a51-9c0b2d4e6f81"
          },
          "Name": {
            "type": "string",
            "description": "The MCP client's name.",
            "nullable": true,
            "example": "Claude Desktop"
          }
        },
        "additionalProperties": false
      },
      "SimpleTeamResponse": {
        "type": "object",
        "properties": {
          "TeamId": {
            "type": "string",
            "description": "The team's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The team's display name.",
            "nullable": true,
            "example": "Sales Team"
          }
        },
        "additionalProperties": false
      },
      "SimpleUserResponse": {
        "type": "object",
        "properties": {
          "UserId": {
            "type": "string",
            "description": "The user's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The user's display name.",
            "nullable": true,
            "example": "Jane Smith"
          },
          "Email": {
            "type": "string",
            "description": "The user's email address.",
            "nullable": true,
            "example": "jane.smith@example.com"
          },
          "ApiUser": {
            "type": "boolean",
            "description": "Whether this user is an API user rather than a regular interactive user. Set to true for API users; omitted (null) for regular users.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false
      },
      "SimpleVariableResponse": {
        "type": "object",
        "properties": {
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable's unique identifier.",
            "format": "uuid",
            "example": "b5f8c2a1-3d4e-4f6a-9b8c-7d2e1f0a3b4c"
          },
          "Name": {
            "type": "string",
            "description": "The entity variable's name.",
            "nullable": true,
            "example": "StartDate"
          }
        },
        "additionalProperties": false
      },
      "SortDirection": {
        "enum": [
          "Ascending",
          "Descending"
        ],
        "type": "string",
        "description": "The direction records are sorted in.\n\n- `Ascending` — Ascending\n- `Descending` — Descending\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Ascending": "Ascending",
          "Descending": "Descending"
        }
      },
      "SummaryEntityResponse": {
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The entity's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "ApiName": {
            "type": "string",
            "description": "The entity's API name, used to reference it in API calls and queries.",
            "nullable": true,
            "example": "sales_orders"
          },
          "EntityGroupId": {
            "type": "string",
            "description": "Identifier of the entity group (folder) this entity belongs to, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-e5f6-4789-abcd-ef0123456789"
          },
          "Type": {
            "type": "integer",
            "description": "Internal integer code classifying the entity. No published code-to-label mapping is available; treat as an opaque value.",
            "format": "int32",
            "example": 0
          },
          "ConnectorId": {
            "type": "string",
            "description": "Identifier of the connector this entity belongs to.",
            "format": "uuid",
            "example": "6f9619ff-8b86-4d01-b42d-00cf4fc964ff"
          },
          "ImageFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row image, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "ColorFieldId": {
            "type": "string",
            "description": "Identifier of the field whose value supplies the row color, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "2b1a3c4d-5e6f-4071-8293-a4b5c6d7e8f9"
          },
          "AddressFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the address, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "9d8c7b6a-5f4e-4321-9876-543210fedcba"
          },
          "CurrencyFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the currency value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "0fa1b2c3-d4e5-4678-9abc-def012345678"
          },
          "DecimalFieldId": {
            "type": "string",
            "description": "Identifier of the field treated as the decimal value, if configured.",
            "format": "uuid",
            "nullable": true,
            "example": "5e4d3c2b-1a09-4f8e-b7c6-d5e4f3a2b1c0"
          },
          "HasStartEndDates": {
            "type": "boolean",
            "description": "Whether the entity supports start and end dates for date-range filtering.",
            "nullable": true,
            "example": true
          },
          "DefaultStartDays": {
            "type": "integer",
            "description": "Default number of days back from today used for the start date when querying.",
            "format": "int32",
            "nullable": true,
            "example": 30
          },
          "ItemName": {
            "type": "string",
            "description": "Plural label for the entity's rows (for example the name shown for a list of items).",
            "nullable": true,
            "example": "Orders"
          },
          "ItemSingular": {
            "type": "string",
            "description": "Singular label for a single row of the entity.",
            "nullable": true,
            "example": "Order"
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the entity is hidden from listings.",
            "nullable": true,
            "example": false
          },
          "CustomEntityType": {
            "type": "integer",
            "description": "Integer code for the custom entity type when the entity is custom: 1 = Summary, 2 = Joined, 3 = Merged, 4 = Comparison, 5 = Restriction, 6 = Matrix, 7 = AI prompt. Null for standard entities.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "BaseEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the base entity being compared from.",
            "format": "uuid",
            "nullable": true,
            "example": "c3d4e5f6-a7b8-4901-bcde-f01234567890"
          },
          "CompareEntityId": {
            "type": "string",
            "description": "For comparison custom entities, the identifier of the entity being compared to.",
            "format": "uuid",
            "nullable": true,
            "example": "d4e5f6a7-b8c9-4012-cdef-012345678901"
          },
          "ComparisonMethod": {
            "type": "integer",
            "description": "For comparison custom entities, the integer code for the comparison method: 1 = Difference, 2 = Similarity.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "NumberOfFavorites": {
            "type": "integer",
            "description": "Number of saved favorites associated with the entity.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "Tables": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EntityTableResponse"
            },
            "description": "The tables (and their fields) that make up the entity. Populated only when the endpoint includes table detail.",
            "nullable": true
          },
          "MergeEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEntityMergeEntity"
            },
            "description": "For merged custom entities, the source entities being merged together. Populated only for merged entities.",
            "nullable": true
          },
          "JoinEntities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DbCustomEntityJoinEntity"
            },
            "description": "For joined custom entities, the source entities being joined together. Populated only for joined entities.",
            "nullable": true
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources such as fields, favorites, details, and data.",
            "nullable": true
          },
          "BaseEntity": {
            "$ref": "#/components/schemas/EntityResponseModel"
          },
          "GroupFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomListGroupFieldModel"
            },
            "description": "The fields the summary groups its rows by.",
            "nullable": true
          },
          "SummaryFields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomListSummaryFieldModel"
            },
            "description": "The aggregated summary fields computed for each group.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "SyncBrowserExtensionConversationItem": {
        "type": "object",
        "properties": {
          "LocalId": {
            "type": "string",
            "description": "Client-assigned identifier used to reconcile the conversation during synchronization.",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "The conversation's display title.",
            "nullable": true
          },
          "PageUrl": {
            "type": "string",
            "description": "URL of the web page the conversation was started from.",
            "nullable": true
          },
          "PagePath": {
            "type": "string",
            "description": "Path portion of the web page the conversation was started from.",
            "nullable": true
          },
          "IsPinned": {
            "type": "boolean",
            "description": "Whether the conversation has been pinned by the user."
          },
          "Status": {
            "type": "integer",
            "description": "Integer status code for the conversation: 1 = Active.",
            "format": "int32"
          },
          "CreatedDate": {
            "type": "string",
            "description": "Date and time the conversation was created, in ISO 8601 format.",
            "nullable": true
          },
          "ModifiedDate": {
            "type": "string",
            "description": "Date and time the conversation was last modified, in ISO 8601 format.",
            "nullable": true
          },
          "Messages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateBrowserExtensionConversationMessageRequest"
            },
            "description": "The conversation's messages, in order.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A client's local conversation submitted for synchronization with the server."
      },
      "SyncBrowserExtensionConversationsRequest": {
        "type": "object",
        "properties": {
          "BrowserExtensionId": {
            "type": "string",
            "description": "Identifier of the browser extension whose conversations are being synchronized.",
            "nullable": true
          },
          "LastSyncDate": {
            "type": "string",
            "description": "Date and time of the client's last synchronization, in ISO 8601 format.",
            "nullable": true
          },
          "Conversations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SyncBrowserExtensionConversationItem"
            },
            "description": "The client's local conversations to reconcile with the server.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for synchronizing the client's browser extension conversations with the server."
      },
      "SyncBrowserExtensionConversationsResponse": {
        "type": "object",
        "properties": {
          "ServerConversations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BrowserExtensionConversationDetailResponse"
            },
            "description": "The conversations held on the server, returned so the client can reconcile its local copies.",
            "nullable": true
          },
          "SyncDate": {
            "type": "string",
            "description": "Date and time the synchronization was performed, in ISO 8601 format.",
            "nullable": true,
            "example": "2024-03-12T10:20:00Z"
          }
        },
        "additionalProperties": false
      },
      "TagAssignmentRequest": {
        "type": "object",
        "properties": {
          "TagId": {
            "type": "string",
            "description": "Identifier of an existing tag owned by the caller. Provide this OR Popdock.WebApi.Models.Request.Post.TagAssignmentRequest.Value.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "Value": {
            "type": "string",
            "description": "Tag text to find (or create) for the caller. Provide this OR Popdock.WebApi.Models.Request.Post.TagAssignmentRequest.TagId.",
            "nullable": true,
            "example": "High Priority"
          }
        },
        "additionalProperties": false,
        "description": "A tag to apply to a resource when it is created. Supply <b>either</b>Popdock.WebApi.Models.Request.Post.TagAssignmentRequest.TagId to link\r\nan existing tag, <b>or</b>Popdock.WebApi.Models.Request.Post.TagAssignmentRequest.Value to find-or-create a tag by name for the calling user."
      },
      "TagByLinkTypeResponse": {
        "type": "object",
        "properties": {
          "LinkId": {
            "type": "string",
            "description": "Identifier of the linked resource (e.g. the connector or list id).",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "TagId": {
            "type": "string",
            "description": "Identifier of the tag applied to the resource.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Value": {
            "type": "string",
            "description": "The tag's display text.",
            "nullable": true,
            "example": "High Priority"
          },
          "HexColor": {
            "type": "string",
            "description": "The tag color as a hex string.",
            "nullable": true,
            "example": "#E53935"
          }
        },
        "additionalProperties": false,
        "description": "One tagged resource of a given type — a flat row pairing the linked resource with the tag applied to it.\r\nReturned by `GET /tag/by-link-type`."
      },
      "TagDetailResponse": {
        "type": "object",
        "properties": {
          "TagId": {
            "type": "string",
            "description": "The tag's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Value": {
            "type": "string",
            "description": "The tag's display text.",
            "nullable": true,
            "example": "High Priority"
          },
          "ColorId": {
            "type": "string",
            "description": "Identifier of the color assigned to the tag, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "HexColor": {
            "type": "string",
            "description": "The tag color as a hex string.",
            "nullable": true,
            "example": "#E53935"
          },
          "Icon": {
            "type": "string",
            "description": "Name of the icon shown alongside the tag, if any.",
            "nullable": true,
            "example": "flag"
          },
          "Groups": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagLinkedItemGroupResponse"
            },
            "description": "The tag's linked resources, grouped by resource type and sorted by type label.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A tag together with the resources linked to it, grouped by resource type.\r\nReturned by `GET /tag/{id}/links`."
      },
      "TagForEntityResponse": {
        "type": "object",
        "properties": {
          "TagId": {
            "type": "string",
            "description": "The tag's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Value": {
            "type": "string",
            "description": "The tag's display text.",
            "nullable": true,
            "example": "High Priority"
          },
          "ColorId": {
            "type": "string",
            "description": "Identifier of the color assigned to the tag, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "HexColor": {
            "type": "string",
            "description": "The tag color as a hex string.",
            "nullable": true,
            "example": "#E53935"
          },
          "Icon": {
            "type": "string",
            "description": "Name of the icon shown alongside the tag, if any.",
            "nullable": true,
            "example": "flag"
          },
          "InTagLink": {
            "type": "boolean",
            "description": "True when this tag is already applied to the resource in question.",
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "A user's tag in the context of a specific resource, flagging whether it is already applied.\r\nUsed to render a tag picker. Returned by `GET /tag/for-entity`."
      },
      "TagLinkedItemBadgeResponse": {
        "type": "object",
        "properties": {
          "Label": {
            "type": "string",
            "description": "The badge text.",
            "nullable": true,
            "example": "REST"
          },
          "Icon": {
            "type": "string",
            "description": "Optional icon name shown before the label.",
            "nullable": true,
            "example": "globe"
          },
          "Style": {
            "type": "string",
            "description": "Optional style hint for rendering the badge.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A small labelled badge shown against a linked item."
      },
      "TagLinkedItemGroupResponse": {
        "type": "object",
        "properties": {
          "LinkType": {
            "type": "integer",
            "description": "The resource type shared by every item in the group (see ResourceType).",
            "format": "int32",
            "example": 2
          },
          "TypeLabel": {
            "type": "string",
            "description": "Human-readable, pluralised label for the resource type.",
            "nullable": true,
            "example": "Lists"
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagLinkedItemResponse"
            },
            "description": "The linked resources of this type, sorted by name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A group of a tag's linked resources that share the same resource type."
      },
      "TagLinkedItemResponse": {
        "type": "object",
        "properties": {
          "LinkId": {
            "type": "string",
            "description": "Identifier of the linked resource.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "LinkType": {
            "type": "integer",
            "description": "The resource type of the linked item (see ResourceType).",
            "format": "int32",
            "example": 2
          },
          "Name": {
            "type": "string",
            "description": "The linked resource's display name.",
            "nullable": true,
            "example": "Sales Orders"
          },
          "Url": {
            "type": "string",
            "description": "Relative edit-page URL the item deep-links to in the app.",
            "nullable": true,
            "example": "/edit-list/7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Subtitle": {
            "type": "string",
            "description": "Optional secondary line shown under the name.",
            "nullable": true,
            "example": "Dynamics GP"
          },
          "Description": {
            "type": "string",
            "description": "Optional descriptive text (for scheduled jobs, a human-readable schedule).",
            "nullable": true,
            "example": "Daily at 6:00 AM"
          },
          "Badges": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagLinkedItemBadgeResponse"
            },
            "description": "Small labelled badges describing the item (e.g. its sub-type or a \"REST\" marker).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single resource linked to a tag, with display metadata for rendering it in a list."
      },
      "TagResponse": {
        "type": "object",
        "properties": {
          "TagId": {
            "type": "string",
            "description": "The tag's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Value": {
            "type": "string",
            "description": "The tag's display text.",
            "nullable": true,
            "example": "High Priority"
          },
          "ColorId": {
            "type": "string",
            "description": "Identifier of the color assigned to the tag, if any.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "HexColor": {
            "type": "string",
            "description": "The tag color as a hex string, resolved from Popdock.WebApi.Models.Response.TagResponse.ColorId.",
            "nullable": true,
            "example": "#E53935"
          },
          "Icon": {
            "type": "string",
            "description": "Name of the icon shown alongside the tag, if any.",
            "nullable": true,
            "example": "flag"
          },
          "LinkCount": {
            "type": "integer",
            "description": "Number of resources currently linked to this tag.",
            "format": "int32",
            "example": 12
          },
          "User": {
            "$ref": "#/components/schemas/SimpleUserResponse"
          }
        },
        "additionalProperties": false
      },
      "TeamMemberResponse": {
        "type": "object",
        "properties": {
          "TeamMemberId": {
            "type": "string",
            "description": "The team membership's unique identifier.",
            "format": "uuid",
            "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
          },
          "User": {
            "$ref": "#/components/schemas/SimpleUserResponse"
          }
        },
        "additionalProperties": false
      },
      "TeamResponse": {
        "type": "object",
        "properties": {
          "TeamId": {
            "type": "string",
            "description": "The team's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The team's display name.",
            "nullable": true,
            "example": "Sales Team"
          },
          "Description": {
            "type": "string",
            "description": "The team's description.",
            "nullable": true,
            "example": "Members of the North America sales organization."
          },
          "MfaEnabled": {
            "type": "boolean",
            "description": "Whether multi-factor authentication is enabled for the team.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false
      },
      "TextSettingsModel": {
        "type": "object",
        "properties": {
          "Format": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "ShowHeaders": {
            "type": "boolean",
            "nullable": true
          },
          "RemoveBlanks": {
            "type": "boolean",
            "nullable": true
          },
          "Delimiter": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TextSettingsRequest": {
        "type": "object",
        "properties": {
          "Format": {
            "type": "integer",
            "description": "Output format: 1 = CSV, 2 = TSV, 3 = JSON, 4 = Markdown.",
            "format": "int32",
            "nullable": true,
            "example": 4
          },
          "ShowHeaders": {
            "type": "boolean",
            "description": "When true, includes a header row of column names.",
            "nullable": true,
            "example": true
          },
          "RemoveBlanks": {
            "type": "boolean",
            "description": "When true, omits rows that are entirely blank.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false,
        "description": "Text/export display settings for a favorite whose view type is text."
      },
      "UpdateBrowserExtensionConversationRequest": {
        "type": "object",
        "properties": {
          "Title": {
            "type": "string",
            "description": "The conversation's display title.",
            "nullable": true
          },
          "IsPinned": {
            "type": "boolean",
            "description": "Whether the conversation has been pinned by the user.",
            "nullable": true
          },
          "Status": {
            "type": "integer",
            "description": "Integer status code for the conversation: 1 = Active.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields to update a browser extension conversation."
      },
      "UploadFileResponse": {
        "type": "object",
        "properties": {
          "Status": {
            "type": "string",
            "description": "The outcome of the file upload operation.",
            "nullable": true,
            "example": "Success"
          },
          "Message": {
            "type": "string",
            "description": "A human-readable message describing the result, typically populated on failure.",
            "nullable": true,
            "example": "The file was uploaded successfully."
          }
        },
        "additionalProperties": false
      },
      "ViewType": {
        "enum": [
          "List",
          "Chart",
          "Pivot",
          "Spreadsheet",
          "Board",
          "Calendar",
          "Text",
          "Map",
          "Image",
          "Card",
          "Summary",
          "IFrame",
          "Singleton",
          "Shipping",
          "Search",
          "ActionForm",
          "AiChat",
          "FilePreview",
          "Markdown"
        ],
        "type": "string",
        "description": "How a view is displayed.\n\n- `List` — List\n- `Chart` — Chart\n- `Pivot` — Pivot\n- `Spreadsheet` — Spreadsheet\n- `Board` — Board\n- `Calendar` — Calendar\n- `Text` — Text\n- `Map` — Map\n- `Image` — Image\n- `Card` — Card\n- `Summary` — Summary\n- `IFrame` — iFrame\n- `Singleton` — Singleton\n- `Shipping` — Shipping\n- `Search` — Search\n- `ActionForm` — Action form\n- `AiChat` — AI chat\n- `FilePreview` — File preview\n- `Markdown` — Markdown\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "List": "List",
          "Chart": "Chart",
          "Pivot": "Pivot",
          "Spreadsheet": "Spreadsheet",
          "Board": "Board",
          "Calendar": "Calendar",
          "Text": "Text",
          "Map": "Map",
          "Image": "Image",
          "Card": "Card",
          "Summary": "Summary",
          "IFrame": "iFrame",
          "Singleton": "Singleton",
          "Shipping": "Shipping",
          "Search": "Search",
          "ActionForm": "Action form",
          "AiChat": "AI chat",
          "FilePreview": "File preview",
          "Markdown": "Markdown"
        }
      },
      "WidgetActionResponse": {
        "type": "object",
        "properties": {
          "WidgetActionId": {
            "type": "string",
            "description": "The widget action's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "WidgetId": {
            "type": "string",
            "description": "The unique identifier of the widget this action belongs to.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "ActionId": {
            "type": "string",
            "description": "The unique identifier of the underlying action, when the widget action references an action.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "EntityActionId": {
            "type": "string",
            "description": "The unique identifier of the underlying entity action, when the widget action references an entity action.",
            "format": "uuid",
            "nullable": true,
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "Name": {
            "type": "string",
            "description": "The widget action's display name.",
            "nullable": true,
            "example": "Send Email"
          },
          "Icon": {
            "type": "string",
            "description": "The icon shown for the action.",
            "nullable": true,
            "example": "envelope"
          },
          "Location": {
            "type": "integer",
            "description": "Integer code for where the action is shown: 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the action is hidden from the widget.",
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false
      },
      "WidgetAiAttachmentFieldResponse": {
        "type": "object",
        "properties": {
          "WidgetAiAttachmentFieldId": {
            "type": "string",
            "description": "The widget AI attachment field's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          }
        },
        "additionalProperties": false
      },
      "WidgetAiAttachmentParameterResponse": {
        "type": "object",
        "properties": {
          "WidgetAiAttachmentParameterId": {
            "type": "string",
            "description": "The widget AI attachment parameter's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's display name.",
            "nullable": true,
            "example": "Customer Id"
          },
          "WidgetParameterId": {
            "type": "string",
            "description": "The unique identifier of the widget parameter this attachment parameter is based on.",
            "format": "uuid",
            "example": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources for this parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WidgetAiAttachmentResponse": {
        "type": "object",
        "properties": {
          "WidgetAiAttachmentId": {
            "type": "string",
            "description": "The widget AI attachment's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The attachment's display name.",
            "nullable": true,
            "example": "Open Invoices"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the attachment type: 1 = List, 2 = Parameter.",
            "format": "int32",
            "example": 1
          },
          "Entity": {
            "$ref": "#/components/schemas/SimpleEntityResponse"
          },
          "Company": {
            "$ref": "#/components/schemas/SimpleCompanyResponse"
          },
          "MaxRecords": {
            "type": "integer",
            "description": "The maximum number of records the attachment returns.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to the attachment's fields, sorts and parameters.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WidgetAiAttachmentSortResponse": {
        "type": "object",
        "properties": {
          "WidgetAiAttachmentSortId": {
            "type": "string",
            "description": "The widget AI attachment sort's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "Direction": {
            "type": "integer",
            "description": "Integer code for the sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "example": 0
          }
        },
        "additionalProperties": false
      },
      "WidgetAiFavoriteAttachmentResponse": {
        "type": "object",
        "properties": {
          "WidgetAiFavoriteAttachmentId": {
            "type": "string",
            "description": "The unique identifier of the link between the AI favorite and the attachment.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Attachment": {
            "$ref": "#/components/schemas/WidgetAiAttachmentResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this attachment.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WidgetAiFavoriteParameterResponse": {
        "type": "object",
        "properties": {
          "WidgetAiFavoriteParameterId": {
            "type": "string",
            "description": "The parameter's unique identifier.",
            "format": "uuid",
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's internal name, referenced from the prompt.",
            "nullable": true,
            "example": "Region"
          },
          "Label": {
            "type": "string",
            "description": "The parameter's display label shown to the user.",
            "nullable": true,
            "example": "Sales Region"
          },
          "FieldType": {
            "type": "integer",
            "description": "Integer code for the parameter's data type: 1 = String, 2 = Date, 3 = Currency, 4 = Number, 5 = Phone, 6 = List, 7 = Percentage, 8 = Yes/No, 9 = Time, 10 = Quantity, 18 = Text, 26 = Date and time.",
            "format": "int32",
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the parameter represents: 1 = Parameter, 2 = Calculation.",
            "format": "int32",
            "example": 1
          },
          "Order": {
            "type": "integer",
            "description": "The position of the parameter in the parameter list, used for ordering.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "Script": {
            "type": "string",
            "description": "The calculation script used to compute the parameter's value, when it is a calculation.",
            "nullable": true,
            "example": "[Quantity] * [Price]"
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places used when displaying a numeric parameter.",
            "format": "int32",
            "nullable": true,
            "example": 2
          },
          "DefaultValueType": {
            "type": "integer",
            "description": "Integer code for how the default value is sourced: 0 = No default, 1 = Constant value, 2 = Date value, 3 = From a parameter, 4 = AI-generated.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "DefaultValueConstant": {
            "type": "string",
            "description": "The constant default value, used when the default value type is a constant.",
            "nullable": true,
            "example": "North America"
          },
          "DefaultValueDate": {
            "type": "integer",
            "description": "Integer code for a relative-date default, used when the default value type is a date: 0 = Today, 1 = Yesterday, 2 = Tomorrow, 5 = Start of month, 6 = End of month, 9 = Start of year, 10 = End of year, 36 = This month, 42 = This year.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the user must supply a value for this parameter.",
            "nullable": true,
            "example": true
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the parameter's input field.",
            "nullable": true,
            "example": "Enter a region"
          }
        },
        "additionalProperties": false
      },
      "WidgetAiFavoriteResponse": {
        "type": "object",
        "properties": {
          "WidgetAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite's unique identifier.",
            "format": "uuid",
            "example": "1d9f8a2b-3c4d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "Name": {
            "type": "string",
            "description": "The AI favorite's display name.",
            "nullable": true,
            "example": "Summarize recent orders"
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text run when the favorite is selected.",
            "nullable": true,
            "example": "Summarize the customer's orders from the last 30 days."
          },
          "AiToneModifier": {
            "$ref": "#/components/schemas/AiToneModifierResponse"
          }
        },
        "additionalProperties": false
      },
      "WidgetAiToolResponse": {
        "type": "object",
        "properties": {
          "WidgetAiToolId": {
            "type": "string",
            "description": "The unique identifier of the AI tool assigned to the widget.",
            "format": "uuid",
            "example": "9b2e4c7a-1f3d-4a6b-8c5e-2d7f0a1b3c4d"
          },
          "ConnectorAiTool": {
            "$ref": "#/components/schemas/ConnectorAiToolResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related resources and actions for this AI tool.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WidgetAiType": {
        "enum": [
          "Fixed",
          "User"
        ],
        "type": "string",
        "description": "How an AI widget's prompt is sourced.\n\n- `Fixed` — Fixed prompt defined in the configuration\n- `User` — Prompt supplied by the user at run time\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Fixed": "Fixed prompt defined in the configuration",
          "User": "Prompt supplied by the user at run time"
        }
      },
      "WidgetDetailResponse": {
        "type": "object",
        "properties": {
          "WidgetDetailId": {
            "type": "string",
            "description": "The widget detail's unique identifier.",
            "format": "uuid",
            "example": "4a1b2c3d-5e6f-4708-9a1b-2c3d4e5f6a7b"
          },
          "WidgetId": {
            "type": "string",
            "description": "The identifier of the widget this detail belongs to.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "EntityDetailId": {
            "type": "string",
            "description": "The identifier of the entity detail this widget detail is based on.",
            "format": "uuid",
            "example": "8c7d6e5f-4a3b-42c1-9d0e-1f2a3b4c5d6e"
          },
          "DisplayType": {
            "type": "integer",
            "description": "Integer code for where the detail is rendered relative to the record: 0 = Not displayed, 1 = Below the record, 2 = Right of the record, 3 = Drill-down, 5 = Field drill-down.",
            "format": "int32",
            "example": 1
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field the detail is associated with, when applicable.",
            "format": "uuid",
            "nullable": true,
            "example": "2d7f0a1b-3c4d-4e5f-8a9b-0c1d2e3f4a5b"
          },
          "ViewType": {
            "type": "integer",
            "description": "Integer code for how the detail is displayed: 0 = List, 1 = Chart, 2 = Pivot, 3 = Spreadsheet, 4 = Board, 5 = Calendar, 6 = Text, 7 = Map, 8 = Image, 9 = Card, 11 = Summary, 12 = iFrame, and others.",
            "format": "int32",
            "nullable": true,
            "example": 0
          }
        },
        "additionalProperties": false
      },
      "WidgetEntityResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "WidgetEnvironmentParameterResponse": {
        "type": "object",
        "additionalProperties": false
      },
      "WidgetFormResponse": {
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The widget's display name.",
            "nullable": true,
            "example": "New Customer Form"
          },
          "Locale": {
            "type": "string",
            "description": "The culture or locale used to format the form's content.",
            "nullable": true,
            "example": "en-US"
          },
          "Endpoint": {
            "type": "string",
            "description": "The encoded widget identifier used as the form's endpoint route.",
            "nullable": true,
            "readOnly": true,
            "example": "aBcD1234EfGh"
          },
          "Action": {
            "$ref": "#/components/schemas/SimpleActionResponse"
          },
          "Options": {
            "$ref": "#/components/schemas/WidgetOptionsResponse"
          }
        },
        "additionalProperties": false
      },
      "WidgetGroupItemResponse": {
        "type": "object",
        "properties": {
          "WidgetItemId": {
            "type": "string",
            "description": "The widget item's unique identifier.",
            "format": "uuid",
            "example": "9c1f4a72-6b3d-4e88-bf21-2a7c5d0e9b14"
          },
          "Name": {
            "type": "string",
            "description": "The widget item's display name.",
            "nullable": true,
            "example": "Open Invoices"
          },
          "Order": {
            "type": "integer",
            "description": "The row position of the item within its group, used for ordering.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "Widget": {
            "$ref": "#/components/schemas/WidgetResponse"
          },
          "Form": {
            "$ref": "#/components/schemas/WidgetFormResponse"
          }
        },
        "additionalProperties": false
      },
      "WidgetGroupResponse": {
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The widget group's display name.",
            "nullable": true,
            "example": "Customer Dashboard"
          },
          "Locale": {
            "type": "string",
            "description": "The locale used for formatting and labels in the widget.",
            "nullable": true,
            "example": "en-US"
          },
          "Endpoint": {
            "type": "string",
            "description": "The encoded widget identifier used to reference the widget in API endpoints.",
            "nullable": true,
            "readOnly": true
          },
          "Tabs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetGroupTabResponse"
            },
            "description": "The tabs that make up the widget group.",
            "nullable": true
          },
          "Options": {
            "$ref": "#/components/schemas/WidgetOptionsResponse"
          }
        },
        "additionalProperties": false
      },
      "WidgetGroupTabResponse": {
        "type": "object",
        "properties": {
          "WidgetItemGroupId": {
            "type": "string",
            "description": "The widget item group's unique identifier.",
            "format": "uuid",
            "example": "5b2c8f10-3d44-4e21-9c0a-7f1e6d2b4a90"
          },
          "Name": {
            "type": "string",
            "description": "The tab's display name.",
            "nullable": true,
            "example": "Sales"
          },
          "Icon": {
            "type": "string",
            "description": "The name or identifier of the icon shown on the tab.",
            "nullable": true,
            "example": "dashboard"
          },
          "Items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetGroupItemResponse"
            },
            "description": "The widget items contained in this tab.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WidgetOptionsResponse": {
        "type": "object",
        "properties": {
          "ShowExport": {
            "type": "boolean",
            "description": "Whether the export control is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowFilter": {
            "type": "boolean",
            "description": "Whether the filter control is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "AllowGrouping": {
            "type": "boolean",
            "description": "Whether users are allowed to group records in the widget.",
            "nullable": true,
            "example": false
          },
          "ShowTotals": {
            "type": "boolean",
            "description": "Whether column totals are shown on the widget.",
            "nullable": true,
            "example": false
          },
          "ShowColumns": {
            "type": "boolean",
            "description": "Whether the column chooser control is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowRefresh": {
            "type": "boolean",
            "description": "Whether the refresh control is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowTitle": {
            "type": "boolean",
            "description": "Whether the widget title is shown.",
            "nullable": true,
            "example": true
          },
          "ShowSearch": {
            "type": "boolean",
            "description": "Whether the search control is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowActions": {
            "type": "boolean",
            "description": "Whether record actions are shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowDetails": {
            "type": "boolean",
            "description": "Whether the record detail view is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowSettings": {
            "type": "boolean",
            "description": "Whether the settings control is shown on the widget.",
            "nullable": true,
            "example": false
          },
          "ShowRecordCount": {
            "type": "boolean",
            "description": "Whether the record count is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ShowFilterDescription": {
            "type": "boolean",
            "description": "Whether the description of the active filter is shown on the widget.",
            "nullable": true,
            "example": false
          },
          "ShowPages": {
            "type": "boolean",
            "description": "Whether paging controls are shown on the widget.",
            "nullable": true,
            "example": true
          },
          "ChangeViewType": {
            "type": "boolean",
            "description": "Whether users are allowed to change the view type of the widget.",
            "nullable": true,
            "example": false
          },
          "ShowFavorites": {
            "type": "boolean",
            "description": "Whether saved favorites are shown on the widget.",
            "nullable": true,
            "example": true
          },
          "AddFavorites": {
            "type": "boolean",
            "description": "Whether users are allowed to add favorites in the widget.",
            "nullable": true,
            "example": true
          },
          "EditFavorites": {
            "type": "boolean",
            "description": "Whether users are allowed to edit favorites in the widget.",
            "nullable": true,
            "example": true
          },
          "AllowCollapse": {
            "type": "boolean",
            "description": "Whether the widget can be collapsed.",
            "nullable": true,
            "example": false
          },
          "DefaultCollapse": {
            "type": "boolean",
            "description": "Whether the widget is collapsed by default.",
            "nullable": true,
            "example": false
          },
          "ShowTabLabel": {
            "type": "boolean",
            "description": "Whether the tab label is shown on the widget.",
            "nullable": true,
            "example": true
          },
          "Sidebar": {
            "type": "boolean",
            "description": "Whether the widget is displayed as a sidebar.",
            "nullable": true,
            "example": false
          },
          "EagerLoad": {
            "type": "boolean",
            "description": "Whether the widget data is eagerly loaded when the widget is rendered.",
            "nullable": true,
            "example": false
          },
          "DisplayEmptyFields": {
            "type": "boolean",
            "description": "Whether fields with no value are displayed on the widget.",
            "nullable": true,
            "example": false
          },
          "ShowCompanies": {
            "type": "boolean",
            "description": "Whether the company selector is shown on the widget.",
            "nullable": true,
            "example": true
          }
        },
        "additionalProperties": false
      },
      "WidgetParameterResponse": {
        "type": "object",
        "properties": {
          "WidgetParameterId": {
            "type": "string",
            "description": "The widget parameter's unique identifier.",
            "format": "uuid",
            "example": "a7d3e9b1-2c45-4f60-8b91-d6e2f0a3c7b8"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's display name.",
            "nullable": true,
            "example": "CustomerId"
          },
          "Lookup": {
            "$ref": "#/components/schemas/LookupResponse"
          },
          "Field": {
            "$ref": "#/components/schemas/SimpleFieldResponse"
          },
          "EnvironmentParameter": {
            "$ref": "#/components/schemas/WidgetEnvironmentParameterResponse"
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this parameter is required.",
            "example": true
          },
          "Script": {
            "type": "string",
            "description": "The script used to compute or transform the parameter's value.",
            "nullable": true,
            "example": "return user.AccountId;"
          }
        },
        "additionalProperties": false
      },
      "WidgetResponse": {
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget's unique identifier.",
            "format": "uuid",
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The widget's display name.",
            "nullable": true,
            "example": "Sales by Region"
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for the widget type: 1 = Application, 3 = Favorite, 4 = Shipping, 5 = Summary, 6 = Singleton, 7 = Sidebar, 8 = Dashboard, 9 = Cards, 10 = Form, 11 = Search, 13 = Image, 14 = AI, 15 = File, 16 = AI Chat.",
            "format": "int32",
            "example": 9
          },
          "Theme": {
            "type": "string",
            "description": "The name of the visual theme applied to the widget.",
            "nullable": true,
            "example": "Light"
          },
          "ConnectorId": {
            "type": "string",
            "description": "The identifier of the connector the widget draws data from.",
            "format": "uuid",
            "nullable": true,
            "example": "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"
          },
          "EntityId": {
            "type": "string",
            "description": "The identifier of the entity the widget displays.",
            "format": "uuid",
            "nullable": true,
            "example": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
          },
          "FavoriteId": {
            "type": "string",
            "description": "The identifier of the favorite the widget is based on.",
            "format": "uuid",
            "nullable": true,
            "example": "16fd2706-8baf-433b-82eb-8c7fada847da"
          },
          "Height": {
            "type": "integer",
            "description": "The widget's height, measured in the unit indicated by HeightType.",
            "format": "int32",
            "example": 400
          },
          "Width": {
            "type": "integer",
            "description": "The widget's width, measured in the unit indicated by WidthType.",
            "format": "int32",
            "example": 600
          },
          "HeightType": {
            "type": "integer",
            "description": "Integer code for the unit of the height value: 1 = Pixels, 2 = Percent.",
            "format": "int32",
            "example": 1
          },
          "WidthType": {
            "type": "integer",
            "description": "Integer code for the unit of the width value: 1 = Pixels, 2 = Percent.",
            "format": "int32",
            "example": 2
          },
          "Token": {
            "type": "string",
            "description": "The access token used to embed or share the widget.",
            "format": "uuid",
            "nullable": true,
            "example": "2f1e6d3c-9b4a-4c8e-bf21-7a0d5e2c9b14"
          },
          "CompanyId": {
            "type": "string",
            "description": "The identifier of the company the widget is scoped to.",
            "format": "uuid",
            "nullable": true,
            "example": "c56a4180-65aa-42ec-a945-5fd21dec0538"
          },
          "UserId": {
            "type": "string",
            "description": "The identifier of the user the widget belongs to.",
            "format": "uuid",
            "nullable": true,
            "example": "9b2e4d6f-1a3c-4b8d-8e07-fc1f90ae7c45"
          },
          "Active": {
            "type": "boolean",
            "description": "Whether the widget is active.",
            "nullable": true,
            "example": true
          },
          "DefaultItemId": {
            "type": "string",
            "description": "The identifier of the widget item shown by default.",
            "format": "uuid",
            "nullable": true,
            "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
          },
          "Endpoint": {
            "type": "string",
            "description": "The encoded widget identifier used to reference the widget in API endpoints.",
            "nullable": true,
            "readOnly": true
          },
          "Locale": {
            "type": "string",
            "description": "The locale used for formatting and labels in the widget.",
            "nullable": true,
            "example": "en-US"
          },
          "Widgets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetResponse"
            },
            "description": "The child widgets contained in this widget. Populated only when the endpoint includes nested widgets.",
            "nullable": true
          },
          "Entities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetEntityResponse"
            },
            "description": "The entities associated with the widget. Populated only when the endpoint includes entity detail.",
            "nullable": true
          },
          "Details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetDetailResponse"
            },
            "description": "The detail views configured for the widget. Populated only when the endpoint includes detail.",
            "nullable": true
          },
          "Actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetActionResponse"
            },
            "description": "The actions available on the widget. Populated only when the endpoint includes actions.",
            "nullable": true
          },
          "Parameters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WidgetParameterResponse"
            },
            "description": "The parameters that drive the widget's query. Populated only when the endpoint includes parameters.",
            "nullable": true
          },
          "Options": {
            "$ref": "#/components/schemas/WidgetOptionsResponse"
          },
          "Links": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "nullable": true
            },
            "description": "HATEOAS links to related widget resources, keyed by relation name.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "WidgetSizeType": {
        "enum": [
          "Pixels",
          "Percent"
        ],
        "type": "string",
        "description": "The unit a widget height/width is measured in.\n\n- `Pixels` — Pixels\n- `Percent` — Percent\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Pixels": "Pixels",
          "Percent": "Percent"
        }
      },
      "WidgetType": {
        "enum": [
          "Application",
          "Favorite",
          "Shipping",
          "Summary",
          "Singleton",
          "Sidebar",
          "Dashboard",
          "Cards",
          "Form",
          "Search",
          "Image",
          "Ai",
          "File",
          "AiChat"
        ],
        "type": "string",
        "description": "The kind of widget.\n\n- `Application` — Entity list (application)\n- `Favorite` — Saved favorite\n- `Shipping` — Shipping\n- `Summary` — Summary\n- `Singleton` — Singleton (a single record)\n- `Sidebar` — Sidebar\n- `Dashboard` — Dashboard\n- `Cards` — Cards\n- `Form` — Form\n- `Search` — Search\n- `Image` — Image\n- `Ai` — AI prompt\n- `File` — File\n- `AiChat` — AI chat\n\nLegacy integer values are also accepted.",
        "x-enumDescriptions": {
          "Application": "Entity list (application)",
          "Favorite": "Saved favorite",
          "Shipping": "Shipping",
          "Summary": "Summary",
          "Singleton": "Singleton (a single record)",
          "Sidebar": "Sidebar",
          "Dashboard": "Dashboard",
          "Cards": "Cards",
          "Form": "Form",
          "Search": "Search",
          "Image": "Image",
          "Ai": "AI prompt",
          "File": "File",
          "AiChat": "AI chat"
        }
      },
      "WriteActionDefaultValueRequest": {
        "required": [
          "ActionFieldId",
          "ActionId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "ActionId": {
            "type": "string",
            "description": "The action this default value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ActionFieldId": {
            "type": "string",
            "description": "The action field this default value applies to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "The default value, interpreted according to ValueType.",
            "nullable": true
          },
          "ParentActionId": {
            "type": "string",
            "description": "The parent action whose return value supplies this default, when ValueType is parent action return.",
            "format": "uuid",
            "nullable": true
          },
          "WidgetEnvironmentId": {
            "type": "string",
            "description": "The widget environment used to resolve this default, when ValueType is environment.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a default value for an action field."
      },
      "WriteActionFieldListItemRequest": {
        "required": [
          "ActionFieldId",
          "Label",
          "Value"
        ],
        "type": "object",
        "properties": {
          "ActionFieldId": {
            "type": "string",
            "description": "The action field this list item belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The text shown for this list item. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The underlying value submitted when this list item is selected. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a list item for an action field."
      },
      "WriteActionFieldRequest": {
        "required": [
          "ActionId"
        ],
        "type": "object",
        "properties": {
          "ActionId": {
            "type": "string",
            "description": "The action this field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Label": {
            "type": "string",
            "description": "The field's display label on the action form.",
            "nullable": true
          },
          "FormFieldType": {
            "type": "integer",
            "description": "The field's data type, from the Popdock field-type catalog.",
            "format": "int32",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the field is hidden on the action form.",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the field must be supplied a value.",
            "nullable": true
          },
          "ReadOnly": {
            "type": "boolean",
            "description": "Whether the field is displayed as read-only and cannot be edited.",
            "nullable": true
          },
          "SortPosition": {
            "type": "integer",
            "description": "The field's ordering position on the form.",
            "format": "int32",
            "nullable": true
          },
          "UseLookup": {
            "type": "boolean",
            "description": "Whether the field uses a lookup to populate its value.",
            "nullable": true
          },
          "LookupEntityId": {
            "type": "string",
            "description": "The entity that supplies the lookup values. Used only when UseLookup is true.",
            "format": "uuid",
            "nullable": true
          },
          "LookupValueFieldId": {
            "type": "string",
            "description": "The lookup entity field that provides the stored value. Used only when UseLookup is true.",
            "format": "uuid",
            "nullable": true
          },
          "LookupDisplayFieldId": {
            "type": "string",
            "description": "The lookup entity field that provides the displayed text. Used only when UseLookup is true.",
            "format": "uuid",
            "nullable": true
          },
          "LookupName": {
            "type": "string",
            "description": "Display name of the lookup. Used only when UseLookup is true.",
            "nullable": true
          },
          "LookupId": {
            "type": "string",
            "description": "The lookup configuration. Used only when UseLookup is true.",
            "format": "uuid",
            "nullable": true
          },
          "ConnectorActionField": {
            "type": "string",
            "description": "Name of the corresponding field on the connector action.",
            "nullable": true
          },
          "ConnectorActionFieldType": {
            "type": "integer",
            "description": "The data type of the underlying connector action field, from the Popdock field-type catalog.",
            "format": "int32",
            "nullable": true
          },
          "ConnectorFlowFieldId": {
            "type": "string",
            "description": "The connector flow field mapped to this action field.",
            "format": "uuid",
            "nullable": true
          },
          "DecimalPlaces": {
            "type": "integer",
            "description": "Number of decimal places to display for numeric fields.",
            "format": "int32",
            "nullable": true
          },
          "DefaultVisible": {
            "type": "boolean",
            "description": "Whether the field is visible by default.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an action field."
      },
      "WriteActionParameterRequest": {
        "required": [
          "ActionId",
          "Name",
          "ParameterType",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "ActionId": {
            "type": "string",
            "description": "The action this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ParameterType": {
            "$ref": "#/components/schemas/ActionParameterType"
          },
          "Name": {
            "type": "string",
            "description": "The parameter's name as sent in the request. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "The parameter value, interpreted according to ValueType.",
            "nullable": true
          },
          "UrlEncode": {
            "type": "boolean",
            "description": "Whether the parameter value is URL-encoded before being sent.",
            "nullable": true
          },
          "AddWhenEmpty": {
            "type": "boolean",
            "description": "Whether the parameter is included even when its resolved value is empty.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a parameter on an action."
      },
      "WriteAiPromptEntityAttachmentCompanyRequest": {
        "required": [
          "CompanyId",
          "CustomEntityAiPromptAttachmentId"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The AI prompt attachment this company scope belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The connector company whose data the AI prompt attachment is scoped to. Must belong to the same connector as the attachment. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a company scope on an AI prompt entity attachment."
      },
      "WriteAiPromptEntityAttachmentFieldRequest": {
        "required": [
          "CustomEntityAiPromptAttachmentId",
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The AI prompt attachment this field belongs to. Required on create. Required when creating (POST). Must reference an existing CustomEntityAiPromptAttachment.CustomEntityAiPromptAttachmentId.",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field included in the AI prompt attachment. Required on create. Required when creating (POST). Must reference an existing EntityField.EntityFieldId.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a field to an AI prompt entity attachment."
      },
      "WriteAiPromptEntityAttachmentRestrictionApplyRequest": {
        "required": [
          "AppliesToId",
          "AppliesToType",
          "CustomEntityAiPromptAttachmentRestrictionId"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentRestrictionId": {
            "type": "string",
            "description": "The restriction this rule applies. Required on create. Required when creating (POST). Must reference an existing CustomEntityAiPromptAttachmentRestriction.CustomEntityAiPromptAttachmentRestrictionId.",
            "format": "uuid",
            "nullable": true
          },
          "AppliesToType": {
            "type": "integer",
            "description": "Integer code for the type of resource the restriction applies to: 1 = User, 2 = Team, 3 = MCP client. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "AppliesToId": {
            "type": "string",
            "description": "The identifier of the user, team or MCP client the restriction applies to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI prompt entity attachment restriction apply rule."
      },
      "WriteAiPromptEntityAttachmentRestrictionValueRequest": {
        "required": [
          "CustomEntityAiPromptAttachmentRestrictionId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentRestrictionId": {
            "type": "string",
            "description": "The identifier of the restriction this value belongs to. Required on create. Required when creating (POST). Must reference an existing CustomEntityAiPromptAttachmentRestriction.CustomEntityAiPromptAttachmentRestrictionId.",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The ordinal position of this value within the restriction (first value, second value, and so on).",
            "format": "int32",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value, populated when ValueType is Constant. Required when ValueType is 0.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative date offset, populated when ValueType is Date. Required when ValueType is 3.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field supplying the value, populated when ValueType is Field. Required when ValueType is 1.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI prompt entity attachment restriction value."
      },
      "WriteAiPromptEntityAttachmentVariableRequest": {
        "required": [
          "CustomEntityAiPromptAttachmentId",
          "EntityVariableId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The AI prompt attachment this variable belongs to. Required on create. Required when creating (POST). Must reference an existing CustomEntityAiPromptAttachment.CustomEntityAiPromptAttachmentId.",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable being assigned a value. Required on create. Required when creating (POST). Must reference an existing EntityVariable.EntityVariableId.",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value, populated when ValueType is Constant. Required when ValueType is 0.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative date offset, populated when ValueType is Date. Required when ValueType is 3.",
            "format": "int32",
            "nullable": true
          },
          "VariableId": {
            "type": "string",
            "description": "The identifier of the variable supplying the value, populated when ValueType is Variable. Required when ValueType is 4.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI prompt entity attachment variable."
      },
      "WriteAiToneModifierRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The tone modifier's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the tone modifier.",
            "nullable": true
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text injected to steer the AI response tone.",
            "nullable": true
          },
          "Temperature": {
            "type": "number",
            "description": "The sampling temperature applied to the AI model, controlling response randomness.",
            "format": "double",
            "nullable": true
          },
          "TopP": {
            "type": "number",
            "description": "The nucleus sampling (top-p) value applied to the AI model.",
            "format": "double",
            "nullable": true
          },
          "MaxTokens": {
            "type": "integer",
            "description": "The maximum number of tokens the AI model may generate in the response.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a tone modifier."
      },
      "WriteColorPaletteColorRequest": {
        "required": [
          "ColorPaletteId",
          "HexColor"
        ],
        "type": "object",
        "properties": {
          "ColorPaletteId": {
            "type": "string",
            "description": "The palette this color belongs to. Required when calling the `color-palette-color`\r\nendpoint directly; set automatically when colors are created inline with a palette. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "HexColor": {
            "pattern": "^[0-9A-Fa-f]{6}$",
            "type": "string",
            "description": "The color as a 6-digit hex string (RRGGBB, no leading #). Required when creating (POST). a valid hex color in format RRGGBB",
            "nullable": true,
            "example": "E53935"
          },
          "Order": {
            "type": "integer",
            "description": "Sort position within the palette. Auto-assigned to the next value when omitted. Auto-assigned on create when omitted.",
            "format": "int32",
            "nullable": true,
            "readOnly": true,
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a single color within a palette."
      },
      "WriteColorPaletteRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The palette's display name. Must be unique within your account. Required when creating (POST).",
            "nullable": true,
            "example": "Brand Colors"
          },
          "Description": {
            "type": "string",
            "description": "An optional description of the palette.",
            "nullable": true,
            "example": "Primary brand palette used across dashboards."
          },
          "Colors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WriteColorPaletteColorRequest"
            },
            "description": "The ordered colors to create alongside the palette. Applied only on create (POST);\r\nignored on update (PATCH) — manage a palette's colors afterwards via the\r\n`color-palette-color` endpoint. Inline child records created alongside the parent in a single POST.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a color palette."
      },
      "WriteColorRequest": {
        "required": [
          "HexColor",
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The color's display name. Must be unique within your account. Required when creating (POST).",
            "nullable": true,
            "example": "Alert Red"
          },
          "HexColor": {
            "pattern": "^[0-9A-Fa-f]{6}$",
            "type": "string",
            "description": "The color as a 6-digit hex string (RRGGBB, no leading #). Required when creating (POST). a valid hex color in format RRGGBB",
            "nullable": true,
            "example": "E53935"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a named color."
      },
      "WriteConnectorAiDataSourceFilterRequest": {
        "required": [
          "ConnectorAiDataSourceId",
          "Key",
          "Type",
          "Value"
        ],
        "type": "object",
        "properties": {
          "ConnectorAiDataSourceId": {
            "type": "string",
            "description": "The AI data source this filter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The name of the field the filter is applied to. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The value the field is compared against. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The filter comparison type applied to the field. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI data source filter."
      },
      "WriteConnectorAiDataSourceRequest": {
        "required": [
          "ConnectorId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector this data source belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "enum": [
              1,
              2
            ],
            "type": "integer",
            "description": "The data source type: 1 = identified by an external data source ID; 2 = derived from a parent data source. Required on create. Required when creating (POST). Allowed values: 1, 2.",
            "format": "int32",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The data source's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the data source.",
            "nullable": true
          },
          "ExternalId": {
            "type": "string",
            "description": "The identifier of the external data source (for example, a search index name). Required when Type is 1.",
            "nullable": true
          },
          "MaxResults": {
            "type": "integer",
            "description": "The maximum number of results returned from the data source per query.",
            "format": "int32",
            "nullable": true
          },
          "ParentDataSourceId": {
            "type": "string",
            "description": "The parent data source this one is derived from. Required when Type is 2.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI data source."
      },
      "WriteConnectorAiModelRequest": {
        "required": [
          "ApiName",
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector this AI model belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The AI model's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "ApiName": {
            "type": "string",
            "description": "The provider's API identifier used when calling the model. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the AI model.",
            "nullable": true
          },
          "Reasoning": {
            "type": "integer",
            "description": "The reasoning effort level sent to the model provider. Applies only to models with reasoning capability.",
            "format": "int32",
            "nullable": true
          },
          "ReasoningSummary": {
            "type": "integer",
            "description": "The reasoning summary level sent to the model provider. Applies only to models with reasoning capability.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI model."
      },
      "WriteConnectorRestErrorCodeRequest": {
        "required": [
          "Code",
          "ConnectorRestId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "ConnectorRestId": {
            "type": "string",
            "description": "The identifier of the REST connector this error code belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The error-handling behavior applied when this HTTP status code is returned. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "Code": {
            "type": "integer",
            "description": "The HTTP status code that triggers this error-handling rule. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a REST connector error code."
      },
      "WriteConnectorRestParameterRequest": {
        "required": [
          "ConnectorRestId",
          "Key",
          "Type"
        ],
        "type": "object",
        "properties": {
          "ConnectorRestId": {
            "type": "string",
            "description": "The identifier of the REST connector this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Where the parameter is applied to the request (URL parameter, header, or body). Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The parameter name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The parameter value.",
            "nullable": true
          },
          "RemoveWhenEmptyValue": {
            "type": "boolean",
            "description": "Whether the parameter is omitted from the request when its value is empty.",
            "nullable": true
          },
          "DoNotUrlEncode": {
            "type": "boolean",
            "description": "Whether the parameter value is sent without URL encoding.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a REST connector parameter."
      },
      "WriteConnectorRestVariableRequest": {
        "required": [
          "ConnectorRestId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorRestId": {
            "type": "string",
            "description": "The identifier of the REST connector this variable belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The variable's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Placeholder": {
            "type": "string",
            "description": "The placeholder token substituted with the variable's value in REST requests.",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the variable.",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for the variable is required.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a REST connector variable."
      },
      "WriteEntityActionRequest": {
        "required": [
          "EntityId",
          "Location",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity this action belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The action's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The action's task type. 1 = Open a website, 2 = Send an API request, 3 = Run a SmartConnect process, 4 = Trigger a Microsoft Flow, 5 = Connector action, 6 = Open a form, 7 = Multi-action, 8 = Document, 9 = Process SmartConnect errors, 10 = Run a workflow, 11 = Database action, 12 = Stored procedure. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "The underlying action this entity action runs, when applicable. Required when Type is 0.",
            "format": "uuid",
            "nullable": true
          },
          "Icon": {
            "type": "string",
            "description": "The icon shown for the action.",
            "nullable": true
          },
          "Location": {
            "type": "integer",
            "description": "Where the action is shown. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "OpenWebsiteLocation": {
            "type": "integer",
            "description": "Where an opened website is displayed, using the same location codes. 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record. Required when the action opens a website. Required when Type is 1.",
            "format": "int32",
            "nullable": true
          },
          "Endpoint": {
            "type": "string",
            "description": "The endpoint URL the action calls. Required when the action opens a website. Required when Type is 1.",
            "nullable": true
          },
          "RefreshAfter": {
            "type": "boolean",
            "description": "Whether the list is refreshed after the action runs.",
            "nullable": true
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new entity action. Each entry links an existing tag (TagId) or finds-or-creates one (Value). Applied on create only.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity action."
      },
      "WriteEntityAiPromptAttachmentRestrictionRequest": {
        "required": [
          "CustomEntityAiPromptAttachmentId",
          "EntityFieldId",
          "RestrictionType"
        ],
        "type": "object",
        "properties": {
          "CustomEntityAiPromptAttachmentId": {
            "type": "string",
            "description": "The identifier of the AI prompt attachment this restriction belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field the restriction filters on. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an AI prompt entity attachment restriction."
      },
      "WriteEntityColorCodingRuleRequest": {
        "required": [
          "EntityColorCodingId",
          "EntityFieldId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityColorCodingId": {
            "type": "string",
            "description": "The color coding this rule belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field the rule compares. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The comparison operator the rule applies. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "Order": {
            "type": "integer",
            "description": "The position of this rule among the color coding's rules, evaluated lowest first.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity color coding rule."
      },
      "WriteEntityColorCodingRuleValueRequest": {
        "required": [
          "EntityColorCodingRuleId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "EntityColorCodingRuleId": {
            "type": "string",
            "description": "The color coding rule this value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The position of this value within the rule's value set, evaluated lowest first.",
            "format": "int32",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against when the value type is a constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code when the value type is a date.",
            "format": "int32",
            "nullable": true
          },
          "VariableId": {
            "type": "string",
            "description": "The identifier of the variable supplying the value when the value type is a variable.",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The identifier of the entity field supplying the value when the value type is a field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity color coding rule value."
      },
      "WriteEntityDetailAiAttachmentRequest": {
        "required": [
          "EntityDetailId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this attachment belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The attachment type. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "AttachmentId": {
            "type": "string",
            "description": "Identifier of the attached resource (for example a list or detail), when the attachment type references one.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI attachment."
      },
      "WriteEntityDetailAiDataSourceRequest": {
        "required": [
          "ConnectorAiDataSourceId",
          "EntityDetailId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this data source belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ConnectorAiDataSourceId": {
            "type": "string",
            "description": "The connector AI data source this entity detail data source maps to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI data source."
      },
      "WriteEntityDetailAiFavoriteApplyRequest": {
        "required": [
          "ApplyToId",
          "ApplyToType",
          "EntityDetailAiFavoriteId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite this apply rule belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ApplyToType": {
            "type": "integer",
            "description": "The kind of subject the favorite is applied to (for example a user or team). Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "ApplyToId": {
            "type": "string",
            "description": "Identifier of the user or team the favorite is applied to, as indicated by ApplyToType. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI favorite apply rule."
      },
      "WriteEntityDetailAiFavoriteAttachmentRequest": {
        "required": [
          "AttachmentType",
          "EntityDetailAiFavoriteId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite this attachment belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "AttachmentType": {
            "type": "integer",
            "description": "The attachment type, indicating what kind of resource is attached. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "AttachmentId": {
            "type": "string",
            "description": "Identifier of the attached resource (for example a list or detail), when the attachment type references one.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI favorite attachment."
      },
      "WriteEntityDetailAiFavoriteDataSourceRequest": {
        "required": [
          "EntityDetailAiDataSourceId",
          "EntityDetailAiFavoriteId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite this data source belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityDetailAiDataSourceId": {
            "type": "string",
            "description": "The entity detail AI data source this favorite data source references. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI favorite data source."
      },
      "WriteEntityDetailAiFavoriteParameterListItemRequest": {
        "required": [
          "EntityDetailAiFavoriteParameterId",
          "Key",
          "Value"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteParameterId": {
            "type": "string",
            "description": "The AI favorite parameter this list item belongs to. Required on create. Required when creating (POST). Must reference an existing EntityDetailAiFavoriteParameter.EntityDetailAiFavoriteParameterId.",
            "format": "uuid",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The stored value submitted when this list item is selected. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The label shown to the user for this list item. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI favorite parameter list item."
      },
      "WriteEntityDetailAiFavoriteToolRequest": {
        "required": [
          "EntityDetailAiFavoriteId",
          "EntityDetailAiToolId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailAiFavoriteId": {
            "type": "string",
            "description": "The AI favorite this tool belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityDetailAiToolId": {
            "type": "string",
            "description": "The entity detail AI tool associated with this favorite. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI favorite tool."
      },
      "WriteEntityDetailAiToolRequest": {
        "required": [
          "ConnectorAiToolId",
          "EntityDetailId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this AI tool belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ConnectorAiToolId": {
            "type": "string",
            "description": "The underlying connector AI tool definition this detail tool exposes. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail AI tool."
      },
      "WriteEntityDetailFieldRequest": {
        "required": [
          "EntityDetailId",
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The underlying entity field this detail field references. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity detail field."
      },
      "WriteEntityFieldListItemRequest": {
        "required": [
          "EntityFieldId",
          "Item",
          "Value"
        ],
        "type": "object",
        "properties": {
          "EntityFieldId": {
            "type": "string",
            "description": "The field this list item belongs to. Required on create. Required when creating (POST). Must reference an existing EntityField.EntityFieldId.",
            "format": "uuid",
            "nullable": true
          },
          "Item": {
            "type": "string",
            "description": "The display text shown for the list item. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Active"
          },
          "Value": {
            "type": "string",
            "description": "The underlying value stored for the list item. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "1"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a list item on an entity field."
      },
      "WriteEntityGroupRequest": {
        "required": [
          "ConnectorId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "ConnectorId": {
            "type": "string",
            "description": "The connector this group belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Name": {
            "type": "string",
            "description": "The group's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an entity group (a grouping of lists within a connector)."
      },
      "WriteEntityMatrixFilterRequest": {
        "required": [
          "AppliesToId",
          "EntityFieldId",
          "EntityId",
          "RestrictionType"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "Identifier of the matrix entity this filter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "AppliesToId": {
            "type": "string",
            "description": "Identifier of the matrix row or column the filter applies to, as indicated by AppliesToType. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field the filter is evaluated against. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          },
          "AppliesToType": {
            "type": "integer",
            "description": "What the filter applies to, either a column or a row.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a matrix filter."
      },
      "WriteEntityMatrixFilterValueRequest": {
        "required": [
          "CustomEntityMatrixFilterId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "CustomEntityMatrixFilterId": {
            "type": "string",
            "description": "Identifier of the matrix filter this value belongs to. Required on create. Required when creating (POST). Must reference an existing CustomEntityMatrixFilter.CustomEntityMatrixFilterId.",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of this value within the filter (for operators that take multiple values, such as Between or One of).",
            "format": "int32",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "Literal value used when the value type is Constant. Required when ValueType is Constant. Required when ValueType is 0.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "Relative date offset used when the value type is Date. Required when ValueType is Date. Required when ValueType is 3.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "Identifier of the entity field the value references. Required when ValueType is Field. Required when ValueType is 1.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a matrix filter value."
      },
      "WriteEntityMatrixValueRequest": {
        "required": [
          "EntityId",
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityId": {
            "type": "string",
            "description": "The entity (list/table) this matrix value belongs to. Required on create. Required when creating (POST). Must reference an existing Entity.EntityId.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The matrix value's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for what the column represents: 1 = Filter, 2 = Summary, 3 = Calculation, 4 = Label. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "BaseFieldId": {
            "type": "string",
            "description": "Identifier of the field the value is based on.",
            "format": "uuid",
            "nullable": true
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "Integer code for the aggregation applied to the value: 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank breaking ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true
          },
          "Calculation": {
            "type": "string",
            "description": "Expression used when the value is a Calculation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a matrix value."
      },
      "WriteEntityMergeCompanyRequest": {
        "required": [
          "CompanyId",
          "CustomMergeEntityId"
        ],
        "type": "object",
        "properties": {
          "CustomMergeEntityId": {
            "type": "string",
            "description": "The merge entity this company belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The connector company included in the merge. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a merge-entity company."
      },
      "WriteEntityMergeFieldRequest": {
        "required": [
          "CustomEntityFieldId",
          "CustomMergeEntityId",
          "EntityFieldId"
        ],
        "type": "object",
        "properties": {
          "CustomMergeEntityId": {
            "type": "string",
            "description": "The merge entity this field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The underlying base field that is mapped. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "CustomEntityFieldId": {
            "type": "string",
            "description": "The parent merged-entity field this base field maps to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Negative": {
            "type": "boolean",
            "description": "Whether the field's value is negated (subtracted) when combined in the merge.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a merged-entity field mapping."
      },
      "WriteEntityRestParameterRequest": {
        "required": [
          "EntityRestId",
          "Key",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityRestId": {
            "type": "string",
            "description": "The REST entity this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The parameter's key (header name, query-parameter name, or body key). Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Where the parameter is placed on the REST request (for example URL parameter, header, or body). Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The parameter's value sent on the request.",
            "nullable": true
          },
          "RemoveWhenEmptyValue": {
            "type": "boolean",
            "description": "Whether the parameter is omitted from the request when its value is empty.",
            "nullable": true
          },
          "DoNotUrlEncode": {
            "type": "boolean",
            "description": "Whether the parameter value is sent as-is without URL encoding.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a REST parameter on an entity."
      },
      "WriteEntityTableFieldRequest": {
        "required": [
          "EntityFieldId",
          "EntityTableId"
        ],
        "type": "object",
        "properties": {
          "EntityTableId": {
            "type": "string",
            "description": "The table this field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The underlying entity field. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "SummaryMethod": {
            "type": "integer",
            "description": "How the field is aggregated. 0 = None, 1 = Sum, 2 = Maximum, 3 = Minimum, 4 = Average, 5 = Count, 6 = Group by, 7 = Rank, 8 = Rank no ties, 9 = Median, 10 = Mode, 11 = Standard deviation, 12 = Variance, 13 = Distinct count, 14 = Distinct value, 15 = First, 16 = Last, 17 = Concatenate.",
            "format": "int32",
            "nullable": true
          },
          "DateMethod": {
            "type": "integer",
            "description": "The date-grouping summary method applied to a date field (for example grouping by day, month, quarter or year).",
            "format": "int32",
            "nullable": true
          },
          "ReverseSign": {
            "type": "boolean",
            "description": "Whether the sign of the field's numeric values is reversed in the aggregation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a table field summary."
      },
      "WriteEntityTableJoinRequest": {
        "required": [
          "EntityTableId",
          "FromFieldId",
          "ToFieldId"
        ],
        "type": "object",
        "properties": {
          "EntityTableId": {
            "type": "string",
            "description": "The table this join belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "FromFieldId": {
            "type": "string",
            "description": "The source field (on this table) used to match the joined table. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "ToFieldId": {
            "type": "string",
            "description": "The target field (on the joined table) matched against the source field. Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a table join."
      },
      "WriteEntityTableRestrictionRequest": {
        "required": [
          "EntityFieldId",
          "EntityTableId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "EntityTableId": {
            "type": "string",
            "description": "The table this restriction applies to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field the restriction filters on. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The comparison operator. 0 = Does not equal, 1 = Equals, 2 = Greater than, 3 = Less than, 4 = Greater than or equal to, 5 = Less than or equal to, 6 = Contains, 7 = Starts with, 8 = Ends with, 9 = Does not contain, 10 = Does not start with, 11 = Does not end with, 12 = Between, 13 = Not between, 14 = One of, 15 = Not one of, 22 = Is null, 23 = Is not null. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a table restriction."
      },
      "WriteEntityTableRestrictionValueRequest": {
        "required": [
          "EntityTableRestrictionId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "EntityTableRestrictionId": {
            "type": "string",
            "description": "The table restriction this value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "Ordinal position of this value within its restriction, used to order multiple values such as the two ends of a Between range.",
            "format": "int32",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value to compare against, when the value type is a constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The numeric date value to compare against, when the value type is a date.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field to compare against, when the value type is a field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a table restriction value."
      },
      "WriteEntityVariableListItemRequest": {
        "required": [
          "EntityVariableId",
          "Key"
        ],
        "type": "object",
        "properties": {
          "EntityVariableId": {
            "type": "string",
            "description": "The variable this list item belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The list item's stored key. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "US"
          },
          "Value": {
            "type": "string",
            "description": "The display value shown for the key.",
            "nullable": true,
            "example": "United States"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a list item on an entity variable."
      },
      "WriteExternalUserRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The user's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "AiPersonalPreferences": {
            "type": "string",
            "description": "Free-text personal preferences applied to the user's AI interactions.",
            "nullable": true
          },
          "Status": {
            "type": "integer",
            "description": "Integer code for the user's status: 0 = Inactive, 1 = Active.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an external user."
      },
      "WriteFavoriteVariableRequest": {
        "required": [
          "EntityVariableId",
          "FavoriteId"
        ],
        "type": "object",
        "properties": {
          "FavoriteId": {
            "type": "string",
            "description": "The favorite this variable value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable this value is supplied for. Must belong to the favorite's entity. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "Value": {
            "type": "string",
            "description": "The value supplied for the variable. Its meaning depends on Popdock.WebApi.Models.Request.WriteFavoriteVariableRequest.ValueType.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a favorite variable value."
      },
      "WriteFiscalPeriodRequest": {
        "required": [
          "EndDate",
          "FiscalYearId",
          "Name",
          "StartDate"
        ],
        "type": "object",
        "properties": {
          "FiscalYearId": {
            "type": "string",
            "description": "The fiscal year this period belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The fiscal period's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "StartDate": {
            "type": "string",
            "description": "The date the fiscal period starts. Required on create. Required when creating (POST).",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "The date the fiscal period ends. Required on create. Required when creating (POST).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a fiscal period."
      },
      "WriteFiscalYearRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The fiscal year's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "StartDate": {
            "type": "string",
            "description": "The date the fiscal year starts.",
            "format": "date-time",
            "nullable": true
          },
          "EndDate": {
            "type": "string",
            "description": "The date the fiscal year ends.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a fiscal year."
      },
      "WriteLookupRestrictionValueRequest": {
        "required": [
          "LookupRestrictionId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "LookupRestrictionId": {
            "type": "string",
            "description": "The lookup restriction this value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value. Populated only when the value type is Constant.",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field supplying the comparison value. Populated only when the value type is Field.",
            "format": "uuid",
            "nullable": true
          },
          "DateTimeValue": {
            "type": "integer",
            "description": "The integer date value. Populated only when the value type is Date.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a lookup restriction value."
      },
      "WriteLookupVariableRequest": {
        "required": [
          "EntityVariableId",
          "LookupId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "LookupId": {
            "type": "string",
            "description": "The lookup this variable belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable this lookup variable supplies a value for. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal constant value, populated when the value type is Constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative date offset, populated when the value type is Date.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field supplying the value, populated when the value type is Field.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a lookup variable."
      },
      "WriteMcpClientCapabilityRequest": {
        "required": [
          "Capability",
          "McpClientId"
        ],
        "type": "object",
        "properties": {
          "McpClientId": {
            "type": "string",
            "description": "The MCP client this capability belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Capability": {
            "$ref": "#/components/schemas/McpClientCapability"
          },
          "Type": {
            "type": "integer",
            "description": "Optional integer subtype qualifying the capability.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP client capability."
      },
      "WriteMcpClientParameterRequest": {
        "required": [
          "Key",
          "McpClientId",
          "Type"
        ],
        "type": "object",
        "properties": {
          "McpClientId": {
            "type": "string",
            "description": "The MCP client this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "Integer code for where the parameter is sent: 1 = URL query string, 2 = HTTP header. Required on create. Required when creating (POST).",
            "format": "int32",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The name of the query-string key or header. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be supplied.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP client parameter."
      },
      "WriteMcpClientRequest": {
        "required": [
          "Name",
          "Type"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The client's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Claude Desktop"
          },
          "Type": {
            "$ref": "#/components/schemas/McpClientType"
          },
          "IdentifierType": {
            "type": "integer",
            "description": "Identifier-type code. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "IdentifierKey": {
            "type": "string",
            "description": "Identifier key (e.g. a header name). Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
            "nullable": true,
            "example": "X-Api-Key"
          },
          "IdentifierValue": {
            "type": "string",
            "description": "Identifier value matched against the client's request. Required when Popdock.WebApi.Models.Request.WriteMcpClientRequest.Type is Custom. Required when Type is 1000.",
            "nullable": true,
            "example": "a1b2c3d4e5f6"
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new client. Each entry links an existing tag (TagId) or finds-or-creates one (Value). Applied on create only.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP client (a client allowed to connect to your servers)."
      },
      "WriteMcpPromptMessageRequest": {
        "required": [
          "McpPromptId",
          "Role",
          "Type"
        ],
        "type": "object",
        "properties": {
          "McpPromptId": {
            "type": "string",
            "description": "The prompt this message belongs to. Required on create. Required when creating (POST). Must reference an existing McpPrompt.McpPromptId.",
            "format": "uuid",
            "nullable": true
          },
          "Role": {
            "enum": [
              1,
              2
            ],
            "type": "integer",
            "description": "The role the message is attributed to: 1 = User, 2 = Assistant. Required on create. Required when creating (POST). Allowed values: 1, 2.",
            "format": "int32",
            "nullable": true
          },
          "Type": {
            "enum": [
              1,
              2
            ],
            "type": "integer",
            "description": "The message content type: 1 = Text, 2 = Image. Required on create. Required when creating (POST). Allowed values: 1, 2.",
            "format": "int32",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "The text content of the message. Used when the message type is Text. Required when Type is 1.",
            "nullable": true
          },
          "Url": {
            "type": "string",
            "description": "The URL of the message content. Used when the message type is Image.",
            "nullable": true
          },
          "MimeType": {
            "type": "string",
            "description": "The MIME type of the message content, such as for an image.",
            "nullable": true
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "The shared instruction supplying this message's content. Used when the message type is Image. Required when Type is 2.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP prompt message."
      },
      "WriteMcpPromptParameterRequest": {
        "required": [
          "McpPromptId",
          "Name"
        ],
        "type": "object",
        "properties": {
          "McpPromptId": {
            "type": "string",
            "description": "The prompt this parameter belongs to. Required on create. Required when creating (POST). Must reference an existing McpPrompt.McpPromptId.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The prompt parameter's name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the prompt parameter.",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this parameter must be supplied.",
            "nullable": true
          },
          "Title": {
            "type": "string",
            "description": "A human-readable display title for the parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP prompt parameter."
      },
      "WriteMcpServerRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The server's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Sales Assistant"
          },
          "Description": {
            "type": "string",
            "description": "An optional description of what the server exposes.",
            "nullable": true,
            "example": "Tools and prompts for querying sales data."
          },
          "CodeMode": {
            "type": "boolean",
            "description": "When true, the server exposes its tools as a single programmatic code tool (that the model\r\n            writes code against) instead of one MCP tool per configured tool. Omit to leave unchanged on update.",
            "nullable": true,
            "example": true
          },
          "CodeModeToolName": {
            "type": "string",
            "description": "The editable name of the code tool used in code mode. Null or empty falls back to `run_code`.",
            "nullable": true,
            "example": "run_code"
          },
          "CodeModeHideTools": {
            "type": "boolean",
            "description": "Controls what the server exposes in code mode: false = hybrid (the code tool plus the\r\n            individual tools), true = exclusive (only the code tool). Omit to leave unchanged on update.",
            "nullable": true,
            "example": false
          },
          "Tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagAssignmentRequest"
            },
            "description": "Tags to apply to the new server. Each entry links an existing tag (TagId) or finds-or-creates one (Value). Applied on create only.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP server definition."
      },
      "WriteMcpToolActionFieldRequest": {
        "required": [
          "McpToolId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this action field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ActionFieldId": {
            "type": "string",
            "description": "Identifier of the underlying action field this mapping targets.",
            "format": "uuid",
            "nullable": true
          },
          "ActionField": {
            "type": "string",
            "description": "The name of the action field being mapped.",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.WriteMcpToolActionFieldRequest.ValueType is Constant.",
            "nullable": true
          },
          "McpToolParameterId": {
            "type": "string",
            "description": "The tool parameter whose value is used, when Popdock.WebApi.Models.Request.WriteMcpToolActionFieldRequest.ValueType is Parameter.",
            "format": "uuid",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.WriteMcpToolActionFieldRequest.ValueType is Date value.",
            "format": "int32",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether a value for this action field is required.",
            "nullable": true
          },
          "DefaultValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "DefaultConstantValue": {
            "type": "string",
            "description": "The literal default value, when Popdock.WebApi.Models.Request.WriteMcpToolActionFieldRequest.DefaultValueType is Constant.",
            "nullable": true
          },
          "DefaultDateValue": {
            "type": "integer",
            "description": "The relative-date code for the default value, when Popdock.WebApi.Models.Request.WriteMcpToolActionFieldRequest.DefaultValueType is Date value.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP tool action field mapping."
      },
      "WriteMcpToolClientInstructionRequest": {
        "required": [
          "McpClientId",
          "McpToolId"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this instruction belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "McpClientId": {
            "type": "string",
            "description": "The MCP client this instruction applies to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The kind of client instruction.",
            "format": "int32",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "The inline instruction text shown to the client.",
            "nullable": true
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "The shared instruction this references, when the instruction reuses a shared one.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP tool client instruction — guidance shown to a specific client when it uses the tool."
      },
      "WriteMcpToolCompanyRequest": {
        "required": [
          "CompanyId",
          "McpToolId"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool the company is associated with. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "CompanyId": {
            "type": "string",
            "description": "The company the MCP tool is associated with. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for associating a company with an MCP tool."
      },
      "WriteMcpToolParameterClientInstructionRequest": {
        "required": [
          "McpClientId",
          "McpToolParameterId"
        ],
        "type": "object",
        "properties": {
          "McpToolParameterId": {
            "type": "string",
            "description": "The MCP tool parameter this instruction belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "McpClientId": {
            "type": "string",
            "description": "The MCP client this instruction applies to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The kind of client instruction.",
            "format": "int32",
            "nullable": true
          },
          "Message": {
            "type": "string",
            "description": "The instruction text sent to the client for this parameter.",
            "nullable": true
          },
          "SharedInstructionId": {
            "type": "string",
            "description": "Identifier of the shared instruction this instruction reuses, when one is referenced.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a per-client instruction on an MCP tool parameter."
      },
      "WriteMcpToolParameterListItemRequest": {
        "required": [
          "Key",
          "McpToolParameterId",
          "Value"
        ],
        "type": "object",
        "properties": {
          "McpToolParameterId": {
            "type": "string",
            "description": "The MCP tool parameter this list item belongs to. Required on create. Required when creating (POST). Must reference an existing McpToolParameter.McpToolParameterId.",
            "format": "uuid",
            "nullable": true
          },
          "Key": {
            "type": "string",
            "description": "The list item's key (the value supplied for the parameter). Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Value": {
            "type": "string",
            "description": "The list item's display value (the label shown for the key). Required on create. Required when creating (POST).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an allowed list item on an MCP tool parameter."
      },
      "WriteMcpToolParameterSortFieldRequest": {
        "required": [
          "EntityFieldId",
          "McpToolParameterId"
        ],
        "type": "object",
        "properties": {
          "McpToolParameterId": {
            "type": "string",
            "description": "The MCP tool parameter this sort field belongs to. Required on create. Required when creating (POST). Must reference an existing McpToolParameter.McpToolParameterId.",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the parameter can sort by. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a sort field on an MCP tool parameter."
      },
      "WriteMcpToolResponseSortRequest": {
        "required": [
          "EntityFieldId",
          "McpToolId"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this sort rule belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the tool's response is sorted by. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Descending": {
            "type": "boolean",
            "description": "Whether the sort is in descending order. False or null sorts ascending.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP tool response sort rule."
      },
      "WriteMcpToolRestrictionValueRequest": {
        "required": [
          "McpToolRestrictionId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "McpToolRestrictionId": {
            "type": "string",
            "description": "The MCP tool restriction this value belongs to. Required on create. Required when creating (POST). Must reference an existing McpToolRestriction.McpToolRestrictionId.",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The position of the value within the restriction (e.g. 1 and 2 for a Between operator). Defaults to 1 on create when omitted.",
            "format": "int32",
            "default": 1,
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when Popdock.WebApi.Models.Request.WriteMcpToolRestrictionValueRequest.ValueType is Constant. Required when ValueType is 0.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.WriteMcpToolRestrictionValueRequest.ValueType is Date. Required when ValueType is 3.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The field whose value is used, when Popdock.WebApi.Models.Request.WriteMcpToolRestrictionValueRequest.ValueType is Field. Required when ValueType is 1. Must reference an existing EntityField.EntityFieldId.",
            "format": "uuid",
            "nullable": true
          },
          "McpToolParameterId": {
            "type": "string",
            "description": "The tool parameter whose value is used, when Popdock.WebApi.Models.Request.WriteMcpToolRestrictionValueRequest.ValueType is Parameter. Required when ValueType is 8. Must reference an existing McpToolParameter.McpToolParameterId.",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable whose value is used, when Popdock.WebApi.Models.Request.WriteMcpToolRestrictionValueRequest.ValueType is Variable. Required when ValueType is 4. Must reference an existing EntityVariable.EntityVariableId.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP tool restriction value."
      },
      "WriteMcpToolVariableRequest": {
        "required": [
          "EntityVariableId",
          "McpToolId",
          "ValueType"
        ],
        "type": "object",
        "properties": {
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool this variable value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityVariableId": {
            "type": "string",
            "description": "The entity variable this value is supplied for. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ValueType": {
            "$ref": "#/components/schemas/RestrictionValueType"
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value supplied to the variable, when Popdock.WebApi.Models.Request.WriteMcpToolVariableRequest.ValueType is Constant.",
            "nullable": true
          },
          "DateValue": {
            "type": "integer",
            "description": "The relative-date code, when Popdock.WebApi.Models.Request.WriteMcpToolVariableRequest.ValueType is Date.",
            "format": "int32",
            "nullable": true
          },
          "McpToolParameterId": {
            "type": "string",
            "description": "The tool parameter whose value is used, when Popdock.WebApi.Models.Request.WriteMcpToolVariableRequest.ValueType is Parameter.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating an MCP tool variable value."
      },
      "WriteRedactionRequest": {
        "required": [
          "Name",
          "RedactionMethod",
          "ReplacementType"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The display name of the redaction. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of what the redaction does.",
            "nullable": true
          },
          "RedactionMethod": {
            "enum": [
              1,
              2,
              3,
              4
            ],
            "type": "integer",
            "description": "Integer code for the redaction method: 1 = All characters, 2 = First X characters, 3 = Last X characters, 4 = First and last X characters. Required on create. Required when creating (POST). Allowed values: 1, 2, 3, 4.",
            "format": "int32",
            "nullable": true
          },
          "ReplacementType": {
            "enum": [
              1,
              2
            ],
            "type": "integer",
            "description": "Integer code for how matched characters are handled: 1 = Replace with the replacement character, 2 = Remove. Required on create. Required when creating (POST). Allowed values: 1, 2.",
            "format": "int32",
            "nullable": true
          },
          "ReplacementCharacter": {
            "type": "string",
            "description": "The character used to replace redacted text when the replacement type is Replace.",
            "nullable": true
          },
          "RedactionLength": {
            "type": "integer",
            "description": "The number of characters affected by the redaction method.",
            "format": "int32",
            "nullable": true
          },
          "SeparateWords": {
            "type": "boolean",
            "description": "Whether each word in the value is redacted separately.",
            "nullable": true
          },
          "TreatPunctuationAsSpaces": {
            "type": "boolean",
            "description": "Whether punctuation is treated as spaces when separating words for redaction.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a redaction."
      },
      "WriteSharedInstructionRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The shared instruction's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "A description of the shared instruction.",
            "nullable": true
          },
          "Content": {
            "type": "string",
            "description": "The instruction text that is shared and reused.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a shared instruction."
      },
      "WriteSidekickPromptGroupRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The group's display name. Required on create. Must be unique within your account. Required when creating (POST).",
            "nullable": true,
            "example": "Sales playbooks"
          },
          "ParentSidekickPromptGroupId": {
            "type": "string",
            "description": "Optional parent group, for nesting groups into a tree. Omit for a top-level group.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a Sidekick prompt group."
      },
      "WriteSidekickPromptMcpToolRequest": {
        "required": [
          "McpToolId",
          "SidekickPromptId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt the tool is linked to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "McpToolId": {
            "type": "string",
            "description": "The MCP tool to link. Must belong to your account. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "5a8b1c20-1234-4d3e-9a0c-0305e82c3399"
          }
        },
        "additionalProperties": false,
        "description": "Fields for linking an MCP tool to a Sidekick prompt."
      },
      "WriteSidekickPromptMessageRequest": {
        "required": [
          "Name",
          "SidekickPromptId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt this message belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Order": {
            "type": "integer",
            "description": "Sort position within the prompt. Auto-assigned to the next value when omitted. Auto-assigned on create when omitted.",
            "format": "int32",
            "nullable": true,
            "readOnly": true,
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The message's machine name. Required on create. Must be unique within the prompt. Required when creating (POST).",
            "nullable": true,
            "example": "intro"
          },
          "Message": {
            "type": "string",
            "description": "The message text (supports parameter placeholders).",
            "nullable": true
          },
          "VisibilityParameterId": {
            "type": "string",
            "description": "A parameter whose value controls this message's visibility.",
            "format": "uuid",
            "nullable": true
          },
          "VisibilityFieldTypes": {
            "type": "string",
            "description": "The field-type values of the visibility parameter that reveal this message.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a Sidekick prompt message."
      },
      "WriteSidekickPromptMessageRestrictionRequest": {
        "required": [
          "SidekickPromptMessageId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptMessageId": {
            "type": "string",
            "description": "The message this restriction applies to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "TargetType": {
            "type": "integer",
            "description": "What the restriction targets (e.g. a parameter or a page value).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter evaluated by the restriction, when targeting a parameter.",
            "format": "uuid",
            "nullable": true
          },
          "PageValueKey": {
            "type": "string",
            "description": "The page value key evaluated by the restriction, when targeting a page value.",
            "nullable": true
          },
          "RestrictionType": {
            "$ref": "#/components/schemas/RestrictionType"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a restriction that conditionally shows a prompt message."
      },
      "WriteSidekickPromptMessageRestrictionValueRequest": {
        "required": [
          "SidekickPromptMessageRestrictionId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptMessageRestrictionId": {
            "type": "string",
            "description": "The restriction this value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ValueNumber": {
            "type": "integer",
            "description": "The position of this value within the restriction. Auto-assigned when omitted. Auto-assigned on create when omitted.",
            "format": "int32",
            "nullable": true,
            "readOnly": true,
            "example": 1
          },
          "ValueType": {
            "type": "integer",
            "description": "How the value is sourced (e.g. a constant, a parameter, or a page value).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when the value type is a constant.",
            "nullable": true
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter supplying the value, when the value type is a parameter.",
            "format": "uuid",
            "nullable": true
          },
          "PageValueKey": {
            "type": "string",
            "description": "The page value key supplying the value, when the value type is a page value.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a value compared against by a message restriction."
      },
      "WriteSidekickPromptPageFilterRequest": {
        "required": [
          "FilterKey",
          "SidekickPromptPageId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page this filter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "FilterKey": {
            "type": "string",
            "description": "The filter key. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "status"
          },
          "FilterValue": {
            "type": "string",
            "description": "The filter value.",
            "nullable": true,
            "example": "open"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a filter applied to a Sidekick prompt page."
      },
      "WriteSidekickPromptPageParameterMappingRequest": {
        "required": [
          "SidekickPromptPageId",
          "SidekickPromptParameterId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page this mapping belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter whose value is supplied by the mapping. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "5a8b1c20-1234-4d3e-9a0c-0305e82c3399"
          },
          "MappingType": {
            "type": "integer",
            "description": "How the value is sourced (attachment field, constant, or page value).",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "AttachmentKey": {
            "type": "string",
            "description": "The attachment key the value is read from, when sourcing from an attachment.",
            "nullable": true
          },
          "FieldName": {
            "type": "string",
            "description": "The field name the value is read from, when sourcing from an attachment field.",
            "nullable": true
          },
          "ConstantValue": {
            "type": "string",
            "description": "The literal value, when sourcing from a constant.",
            "nullable": true
          },
          "PageValueKey": {
            "type": "string",
            "description": "The page value key the value is read from, when sourcing from a page value.",
            "nullable": true
          },
          "IsDefault": {
            "type": "boolean",
            "description": "When true the resolved value pre-fills the question but stays visible and editable; when false\r\n(default) the parameter is hidden and the value is forced. Defaults to False on create when omitted.",
            "default": false,
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a mapping that supplies a prompt parameter's value from page context\r\n(an attachment field, a constant, or a page value key)."
      },
      "WriteSidekickPromptPageRefreshAttachmentRequest": {
        "required": [
          "AttachmentKey",
          "SidekickPromptPageId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptPageId": {
            "type": "string",
            "description": "The page this refresh attachment belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "AttachmentKey": {
            "type": "string",
            "description": "The attachment key to refresh. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "recordList"
          },
          "McpToolId": {
            "type": "string",
            "description": "The specific MCP tool that triggers the refresh. Omit to refresh after any tool runs.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a refresh attachment, which re-fetches a page attachment after a\r\ntool runs."
      },
      "WriteSidekickPromptPageRequest": {
        "required": [
          "PageRoute",
          "SidekickPromptId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt this page belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "PageRoute": {
            "type": "string",
            "description": "The route the prompt is attached to. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "/opportunities"
          },
          "PageTab": {
            "type": "string",
            "description": "An optional tab within the page.",
            "nullable": true
          },
          "IsPinned": {
            "type": "boolean",
            "description": "Whether the prompt is pinned on the page. Defaults to False on create when omitted.",
            "default": false,
            "nullable": true,
            "example": false
          },
          "IsPerRecord": {
            "type": "boolean",
            "description": "Whether the prompt runs per record on the page. Defaults to False on create when omitted.",
            "default": false,
            "nullable": true,
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a page attachment for a Sidekick prompt."
      },
      "WriteSidekickPromptParameterRequest": {
        "required": [
          "Name",
          "SidekickPromptId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptId": {
            "type": "string",
            "description": "The prompt this parameter belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Order": {
            "type": "integer",
            "description": "Sort position within the prompt. Auto-assigned to the next value when omitted. Auto-assigned on create when omitted.",
            "format": "int32",
            "nullable": true,
            "readOnly": true,
            "example": 1
          },
          "Name": {
            "type": "string",
            "description": "The parameter's machine name. Required on create. Must be unique within the prompt. Required when creating (POST).",
            "nullable": true,
            "example": "region"
          },
          "Label": {
            "type": "string",
            "description": "The label shown to the user when answering the questionnaire.",
            "nullable": true,
            "example": "Region"
          },
          "Subtitle": {
            "type": "string",
            "description": "An optional subtitle shown under the label.",
            "nullable": true
          },
          "Placeholder": {
            "type": "string",
            "description": "Placeholder text shown in the input.",
            "nullable": true
          },
          "Type": {
            "type": "integer",
            "description": "The parameter type.",
            "format": "int32",
            "nullable": true,
            "example": 1
          },
          "FieldType": {
            "type": "integer",
            "description": "The underlying field type (for typed inputs).",
            "format": "int32",
            "nullable": true
          },
          "ListType": {
            "type": "integer",
            "description": "The list type, when the parameter is a list.",
            "format": "int32",
            "nullable": true
          },
          "ListResourceType": {
            "type": "integer",
            "description": "The resource type backing a resource-driven list.",
            "format": "int32",
            "nullable": true
          },
          "ParentParameterId": {
            "type": "string",
            "description": "A parent parameter, when this parameter is nested under another.",
            "format": "uuid",
            "nullable": true
          },
          "AllowMultiples": {
            "type": "boolean",
            "description": "Whether the user may select multiple values.",
            "nullable": true
          },
          "ShowOtherOption": {
            "type": "boolean",
            "description": "Whether to offer a free-text \"other\" option.",
            "nullable": true
          },
          "AiConnectorId": {
            "type": "string",
            "description": "The connector used for AI-backed parameters.",
            "format": "uuid",
            "nullable": true
          },
          "AiModelId": {
            "type": "string",
            "description": "The AI model used for AI-backed parameters.",
            "format": "uuid",
            "nullable": true
          },
          "Script": {
            "type": "string",
            "description": "A script used to compute or validate the value.",
            "nullable": true
          },
          "Required": {
            "type": "boolean",
            "description": "Whether the parameter must be answered.",
            "nullable": true
          },
          "ValidCharacterType": {
            "type": "integer",
            "description": "The allowed character class for text validation.",
            "format": "int32",
            "nullable": true
          },
          "RegexPattern": {
            "type": "string",
            "description": "A regex the value must match.",
            "nullable": true
          },
          "MaxCharacters": {
            "type": "integer",
            "description": "The maximum number of characters allowed.",
            "format": "int32",
            "nullable": true
          },
          "ResourceFilter": {
            "type": "string",
            "description": "An optional filter applied to the parameter's resource list.",
            "nullable": true
          },
          "VisibilityParameterId": {
            "type": "string",
            "description": "A parameter whose value controls this parameter's visibility.",
            "format": "uuid",
            "nullable": true
          },
          "VisibilityFieldTypes": {
            "type": "string",
            "description": "The field-type values of the visibility parameter that reveal this parameter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a Sidekick prompt parameter."
      },
      "WriteSidekickPromptParameterValueMappingRequest": {
        "required": [
          "ChildSidekickPromptParameterId",
          "ParentSidekickPromptParameterId",
          "SidekickPromptParameterValueId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptParameterValueId": {
            "type": "string",
            "description": "The parameter value the mapping hangs off. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "ChildSidekickPromptParameterId": {
            "type": "string",
            "description": "The dependent (child) parameter driven by the value. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "5a8b1c20-1234-4d3e-9a0c-0305e82c3399"
          },
          "ParentSidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter that owns the value (the parent). Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "9c2f7e10-5678-4b1a-9a0c-0305e82c3477"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a parameter-value mapping, which links a selected parameter value\r\nto a dependent (child) parameter so picking the value drives the child parameter."
      },
      "WriteSidekickPromptParameterValueRequest": {
        "required": [
          "SidekickPromptParameterId"
        ],
        "type": "object",
        "properties": {
          "SidekickPromptParameterId": {
            "type": "string",
            "description": "The parameter this value belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          },
          "Value": {
            "type": "string",
            "description": "The stored value.",
            "nullable": true,
            "example": "north"
          },
          "Label": {
            "type": "string",
            "description": "The label shown for the value.",
            "nullable": true,
            "example": "North"
          },
          "Icon": {
            "type": "string",
            "description": "An optional icon name shown beside the value.",
            "nullable": true
          },
          "Prompt": {
            "type": "string",
            "description": "An optional prompt fragment associated with selecting this value.",
            "nullable": true
          },
          "Order": {
            "type": "integer",
            "description": "Sort position within the parameter. Auto-assigned to the next value when omitted. Auto-assigned on create when omitted.",
            "format": "int32",
            "nullable": true,
            "readOnly": true,
            "example": 1
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a predefined value of a Sidekick prompt parameter."
      },
      "WriteSidekickPromptRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The prompt's display name. Required on create. Required when creating (POST).",
            "nullable": true,
            "example": "Summarize open opportunities"
          },
          "Subtitle": {
            "type": "string",
            "description": "An optional short subtitle shown under the name.",
            "nullable": true,
            "example": "Across all sales reps"
          },
          "Description": {
            "type": "string",
            "description": "An optional longer description of what the prompt does.",
            "nullable": true
          },
          "SlashCommand": {
            "type": "string",
            "description": "The slash command that invokes the prompt (without the leading slash).",
            "nullable": true,
            "example": "summarize-opps"
          },
          "Status": {
            "type": "integer",
            "description": "The prompt's status. Defaults to active (1) on create. Defaults to 1 on create when omitted.",
            "format": "int32",
            "default": 1,
            "nullable": true,
            "example": 1
          },
          "Type": {
            "type": "integer",
            "description": "The prompt's type. Defaults to 1 on create. Defaults to 1 on create when omitted.",
            "format": "int32",
            "default": 1,
            "nullable": true,
            "example": 1
          },
          "SidekickPromptGroupId": {
            "type": "string",
            "description": "The group the prompt belongs to. Omit to leave it ungrouped.",
            "format": "uuid",
            "nullable": true,
            "example": "3f2504e0-4f89-41d3-9a0c-0305e82c3301"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a Sidekick prompt."
      },
      "WriteTagRequest": {
        "required": [
          "Value"
        ],
        "type": "object",
        "properties": {
          "Value": {
            "type": "string",
            "description": "The tag's display text. Required when creating (POST).",
            "nullable": true,
            "example": "High Priority"
          },
          "UserId": {
            "type": "string",
            "description": "Owner of the tag. Defaults to the calling user when omitted.",
            "format": "uuid",
            "nullable": true,
            "example": "b5f8c2a1-7777-8888-9999-aabbccddeeff"
          },
          "ColorId": {
            "type": "string",
            "description": "Identifier of the color to assign to the tag.",
            "format": "uuid",
            "nullable": true,
            "example": "a1b2c3d4-1111-2222-3333-444455556666"
          },
          "Icon": {
            "type": "string",
            "description": "Name of the icon to show alongside the tag.",
            "nullable": true,
            "example": "flag"
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a tag."
      },
      "WriteTeamMemberRequest": {
        "required": [
          "TeamId",
          "UserId"
        ],
        "type": "object",
        "properties": {
          "TeamId": {
            "type": "string",
            "description": "The team this membership belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "UserId": {
            "type": "string",
            "description": "The user who belongs to the team. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a team membership."
      },
      "WriteTeamRequest": {
        "required": [
          "Name"
        ],
        "type": "object",
        "properties": {
          "Name": {
            "type": "string",
            "description": "The team's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Description": {
            "type": "string",
            "description": "The team's description.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a team."
      },
      "WriteWidgetActionRequest": {
        "required": [
          "WidgetId"
        ],
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget this action belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "ActionId": {
            "type": "string",
            "description": "The underlying action, when the widget action references an action.",
            "format": "uuid",
            "nullable": true
          },
          "EntityActionId": {
            "type": "string",
            "description": "The underlying entity action, when the widget action references an entity action.",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The widget action's display name.",
            "nullable": true
          },
          "Icon": {
            "type": "string",
            "description": "The icon shown for the action.",
            "nullable": true
          },
          "Location": {
            "type": "integer",
            "description": "Where the action is shown: 0 = Hidden, 1 = Toolbar, 2 = Sidebar, 3 = Record.",
            "format": "int32",
            "nullable": true
          },
          "Hidden": {
            "type": "boolean",
            "description": "Whether the action is hidden from the widget.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a widget action."
      },
      "WriteWidgetAiAttachmentFieldRequest": {
        "required": [
          "EntityFieldId",
          "WidgetAiAttachmentId"
        ],
        "type": "object",
        "properties": {
          "WidgetAiAttachmentId": {
            "type": "string",
            "description": "The widget AI attachment this field belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field included in the AI attachment. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a field to a widget AI attachment."
      },
      "WriteWidgetAiAttachmentSortRequest": {
        "required": [
          "EntityFieldId",
          "WidgetAiAttachmentId"
        ],
        "type": "object",
        "properties": {
          "WidgetAiAttachmentId": {
            "type": "string",
            "description": "The widget AI attachment this sort belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the attachment is sorted by. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Direction": {
            "type": "integer",
            "description": "The sort direction: 0 = Ascending, 1 = Descending.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for adding a sort to a widget AI attachment."
      },
      "WriteWidgetAiFavoriteRequest": {
        "required": [
          "Name",
          "Prompt",
          "WidgetId"
        ],
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget this AI favorite belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "Name": {
            "type": "string",
            "description": "The AI favorite's display name. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "Prompt": {
            "type": "string",
            "description": "The prompt text run when the favorite is selected. Required on create. Required when creating (POST).",
            "nullable": true
          },
          "AiToneModifierId": {
            "type": "string",
            "description": "The tone modifier applied to the AI response for this favorite.",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a widget AI favorite."
      },
      "WriteWidgetDetailRequest": {
        "required": [
          "EntityDetailId",
          "WidgetId"
        ],
        "type": "object",
        "properties": {
          "WidgetId": {
            "type": "string",
            "description": "The widget this detail belongs to. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "EntityDetailId": {
            "type": "string",
            "description": "The entity detail this widget detail is based on. Required on create. Required when creating (POST).",
            "format": "uuid",
            "nullable": true
          },
          "DisplayType": {
            "type": "integer",
            "description": "Where the detail is rendered relative to the record.",
            "format": "int32",
            "nullable": true
          },
          "EntityFieldId": {
            "type": "string",
            "description": "The entity field the detail is associated with, when applicable.",
            "format": "uuid",
            "nullable": true
          },
          "ViewType": {
            "type": "integer",
            "description": "How the detail is displayed.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Fields for creating or updating a widget detail — a detail view shown for a widget's records."
      },
      "eOne.Microservice.Shared.CustomRest.RestEnums.RequestMethod": {
        "enum": [
          "Inherit",
          "Get",
          "Post",
          "Put",
          "Patch",
          "Delete"
        ],
        "type": "string"
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "apiKey",
        "description": "Please enter 'Bearer' followed by your JWT token",
        "name": "Authorization",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "Account",
      "description": "Accounts, users, teams and security."
    },
    {
      "name": "Teams",
      "description": "Teams",
      "parent": "Account"
    },
    {
      "name": "Users",
      "description": "Users",
      "parent": "Account"
    },
    {
      "name": "Security",
      "description": "Security",
      "parent": "Account"
    },
    {
      "name": "Colors",
      "description": "Colors and color palettes.",
      "parent": "Account"
    },
    {
      "name": "AI tone modifiers",
      "description": "AI tone modifiers",
      "parent": "Account"
    },
    {
      "name": "Fiscal years",
      "description": "Fiscal years, periods and date values.",
      "parent": "Account"
    },
    {
      "name": "Redactions",
      "description": "Redaction rules for masking sensitive data.",
      "parent": "Account"
    },
    {
      "name": "Connectors",
      "description": "Data source connections, setup and companies."
    },
    {
      "name": "Groups",
      "description": "Groups",
      "parent": "Connectors"
    },
    {
      "name": "Companies",
      "description": "Companies",
      "parent": "Connectors"
    },
    {
      "name": "Lookups",
      "description": "Lookup definitions and their restrictions and variables.",
      "parent": "Connectors"
    },
    {
      "name": "Connector REST settings",
      "description": "REST connector error codes, parameters and variables.",
      "parent": "Connectors",
      "x-displayName": "REST"
    },
    {
      "name": "Connector AI settings",
      "description": "Connector AI data sources, models and tools.",
      "parent": "Connectors",
      "x-displayName": "AI"
    },
    {
      "name": "Entities",
      "description": "List/table definitions, entity actions and groups."
    },
    {
      "name": "Fields",
      "description": "Entity fields, defaults, keys and list items.",
      "parent": "Entities"
    },
    {
      "name": "Color coding",
      "description": "Color coding rules and values.",
      "parent": "Entities"
    },
    {
      "name": "Variables",
      "description": "Entity variables and their list items.",
      "parent": "Entities"
    },
    {
      "name": "Matrix",
      "description": "Matrix rows, columns, filters and values.",
      "parent": "Entities"
    },
    {
      "name": "Merge",
      "description": "Merged entities, companies and fields.",
      "parent": "Entities"
    },
    {
      "name": "Tables",
      "description": "Table entities, fields, joins and restrictions.",
      "parent": "Entities"
    },
    {
      "name": "Entity REST settings",
      "description": "REST entity parameters and optimization.",
      "parent": "Entities",
      "x-displayName": "REST"
    },
    {
      "name": "Entity AI settings",
      "description": "AI prompt attachments on entities and their fields/restrictions.",
      "parent": "Entities",
      "x-displayName": "AI"
    },
    {
      "name": "Details",
      "description": "Detail (drill-down) views and their fields, filters and items."
    },
    {
      "name": "Detail AI settings",
      "description": "AI attachments, data sources and tools on entity details.",
      "parent": "Details",
      "x-displayName": "AI"
    },
    {
      "name": "Favorites",
      "description": "Saved query/view configurations and their columns, restrictions and sharing."
    },
    {
      "name": "Widgets",
      "description": "Embeddable widgets and their detail, form, options and parameters."
    },
    {
      "name": "Widget AI settings",
      "description": "AI tools available to widgets.",
      "parent": "Widgets",
      "x-displayName": "AI"
    },
    {
      "name": "Endpoints",
      "description": "Connector endpoints and their fields, parameters and sorting."
    },
    {
      "name": "Actions",
      "description": "Action definitions and their fields, parameters and default values."
    },
    {
      "name": "Scheduled jobs",
      "description": "Scheduled jobs"
    },
    {
      "name": "Tags",
      "description": "Tags"
    },
    {
      "name": "MCP"
    },
    {
      "name": "Servers",
      "description": "MCP servers",
      "parent": "MCP"
    },
    {
      "name": "Clients",
      "description": "MCP clients",
      "parent": "MCP"
    },
    {
      "name": "Shared instructions",
      "description": "Shared instructions",
      "parent": "MCP"
    },
    {
      "name": "Prompts",
      "description": "MCP prompts",
      "parent": "MCP"
    },
    {
      "name": "Prompt parameters",
      "description": "MCP prompt parameters.",
      "parent": "Prompts",
      "x-displayName": "Parameters"
    },
    {
      "name": "Messages",
      "description": "Messages",
      "parent": "Prompts"
    },
    {
      "name": "Tools",
      "description": "MCP tools and their responses, restrictions and instructions.",
      "parent": "MCP"
    },
    {
      "name": "Tool parameters",
      "description": "MCP tool parameters, validations and list items.",
      "parent": "Tools",
      "x-displayName": "Parameters"
    },
    {
      "name": "Action fields",
      "description": "Action fields",
      "parent": "Tools"
    },
    {
      "name": "Companies",
      "description": "Companies",
      "parent": "Tools"
    },
    {
      "name": "Restrictions",
      "description": "Restrictions",
      "parent": "Tools"
    },
    {
      "name": "Tool variables",
      "description": "MCP tool variables.",
      "parent": "Tools",
      "x-displayName": "Variables"
    },
    {
      "name": "Client instructions",
      "description": "Client instructions",
      "parent": "Tools"
    },
    {
      "name": "Response fields",
      "description": "Response fields and sorting",
      "parent": "Tools"
    },
    {
      "name": "Sidekick"
    },
    {
      "name": "Sidekick groups",
      "description": "Sidekick prompt groups.",
      "parent": "Sidekick",
      "x-displayName": "Groups"
    },
    {
      "name": "Sidekick prompts",
      "description": "Sidekick prompts and their parameters, messages, pages and tools.",
      "parent": "Sidekick"
    },
    {
      "name": "Sidekick parameters",
      "description": "Prompt parameters, their values and value mappings.",
      "parent": "Sidekick prompts",
      "x-displayName": "Parameters"
    },
    {
      "name": "Sidekick messages",
      "description": "Prompt messages, their restrictions and restriction values.",
      "parent": "Sidekick prompts",
      "x-displayName": "Messages"
    },
    {
      "name": "Sidekick pages",
      "description": "Prompt pages and their filters, parameter mappings and refresh attachments.",
      "parent": "Sidekick prompts",
      "x-displayName": "Pages"
    },
    {
      "name": "Sidekick tools",
      "description": "MCP tools linked to a prompt.",
      "parent": "Sidekick prompts",
      "x-displayName": "Tools"
    },
    {
      "name": "Query",
      "description": "Running queries and exporting, downloading, uploading and OData access."
    }
  ],
  "x-tagGroups": [
    {
      "name": "Account",
      "tags": [
        "Account",
        "Teams",
        "Users",
        "Security",
        "Colors",
        "AI tone modifiers",
        "Fiscal years",
        "Redactions"
      ]
    },
    {
      "name": "Connectors",
      "tags": [
        "Connectors",
        "Groups",
        "Companies",
        "Lookups",
        "Connector REST settings",
        "Connector AI settings"
      ]
    },
    {
      "name": "Entities",
      "tags": [
        "Entities",
        "Fields",
        "Color coding",
        "Variables",
        "Matrix",
        "Merge",
        "Tables",
        "Entity REST settings",
        "Entity AI settings"
      ]
    },
    {
      "name": "Details",
      "tags": [
        "Details",
        "Detail AI settings"
      ]
    },
    {
      "name": "Favorites",
      "tags": [
        "Favorites"
      ]
    },
    {
      "name": "Widgets",
      "tags": [
        "Widgets",
        "Widget AI settings"
      ]
    },
    {
      "name": "Endpoints",
      "tags": [
        "Endpoints"
      ]
    },
    {
      "name": "Actions",
      "tags": [
        "Actions"
      ]
    },
    {
      "name": "Scheduled jobs",
      "tags": [
        "Scheduled jobs"
      ]
    },
    {
      "name": "Tags",
      "tags": [
        "Tags"
      ]
    },
    {
      "name": "MCP",
      "tags": [
        "Servers",
        "Clients",
        "Shared instructions",
        "Prompts",
        "Prompt parameters",
        "Messages",
        "Tools",
        "Tool parameters",
        "Action fields",
        "Companies",
        "Restrictions",
        "Tool variables",
        "Client instructions",
        "Response fields"
      ]
    },
    {
      "name": "Sidekick",
      "tags": [
        "Sidekick groups",
        "Sidekick prompts",
        "Sidekick parameters",
        "Sidekick messages",
        "Sidekick pages",
        "Sidekick tools"
      ]
    },
    {
      "name": "Query",
      "tags": [
        "Query"
      ]
    }
  ]
}