{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Practice Better API Documentation",
    "description": "### Practice Better RESTful API. \n\n This API is currently in beta, and we are actively refining and expanding its capabilities. Your input is invaluable as we strive to deliver a robust and user-friendly experience. \n\n If you have specific use cases that require additional endpoints not currently available, please don't hesitate to reach out to us. \n\n Limits: \n\n * Rate: 5 Requests per second \n* Burst: 20 Requests \n* Quota: 10,000 Requests per day \n\n\n\n © Green Patch Inc.",
    "termsOfService": "https://practicebetter.io/terms-api/",
    "contact": {
      "name": "Developer Support",
      "url": "https://help.practicebetter.io/hc/en-us/requests/new"
    }
  },
  "host": "api.practicebetter.io",
  "schemes": [
    "https"
  ],
  "paths": {
    "/{proxy+}": {
      "x-amazon-apigateway-any-method": {
        "responses": {
          "404": {
            "description": "404 Response"
          }
        }
      }
    },
    "/oauth2/token": {
      "post": {
        "tags": [
          "Auth"
        ],
        "summary": "Token",
        "description": "OAuth2 Client Credentials Flow token request",
        "operationId": "OAuth2_grant",
        "consumes": [
          "application/x-www-form-urlencoded"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "oauth2req",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OAuthTokenRequest"
            },
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OAuthTokenResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": []
      }
    },
    "/consultant/packages/instances": {
      "post": {
        "tags": [
          "Client Packages"
        ],
        "summary": "Create Package",
        "description": "Create a package for a client.",
        "operationId": "ConsultantClientPackageInstance_Create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientPackageInstanceFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientPackageInstance"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Client Packages"
        ],
        "summary": "List Packages",
        "description": "Returns a list of client packages. Packages are returned in descending order, with the most recent packages appearing\r\nfirst.",
        "operationId": "ConsultantClientPackageInstance_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose client packages should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "expired",
            "in": "query",
            "description": " If true, will return only expired packages. If false, will return active packages. If omitted,\r\nwill return both.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "packages",
            "in": "query",
            "description": " Filter for client packages associated with these base package IDs.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose client packages should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "status",
            "in": "query",
            "description": " The statuses fo the client packages to retrieve. Possible values are `pending` `confirmed` `cancelled`.",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientPackageInstance>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/packages/instances/{instanceId}": {
      "get": {
        "tags": [
          "Client Packages"
        ],
        "summary": "Get Package",
        "description": "A package combines sessions and programs offered to a client.\r\n[Learn more](https://help.practicebetter.io/hc/en-us/articles/115002329552)\r\nReturns an instance of a client's package with a given ID.",
        "operationId": "ConsultantClientPackageInstance_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "instanceId",
            "in": "path",
            "description": "The unique identifier of the client package.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientPackageInstance"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Client Packages"
        ],
        "summary": "Delete Package",
        "description": "Please note, your regulatory body may require you to keep a record of all documents and resources associated with your\r\nclients. This action cannot be undone.",
        "operationId": "ConsultantClientPackageInstance_Delete",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "instanceId",
            "in": "path",
            "description": "The unique identifier of the package.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/packages/instances/{instanceId}/cancel": {
      "post": {
        "tags": [
          "Client Packages"
        ],
        "summary": "Cancel Package",
        "description": "Cancel a client package.",
        "operationId": "ConsultantClientPackageInstance_Cancel",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientSessionCancellationFragment"
            }
          },
          {
            "name": "instanceId",
            "in": "path",
            "description": "The unique identifier of the package.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/records": {
      "post": {
        "tags": [
          "Client Records"
        ],
        "summary": "Create Client Record",
        "description": "Create a client record.",
        "operationId": "ConsultantClientRecord_Create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "description": "",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientRecordCreateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientRecord"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Client Records"
        ],
        "summary": "List Client Records",
        "description": "Returns a list of client records. Records are returned in descending order, with the most recent records appearing\r\nfirst\r\nbased on date created.",
        "operationId": "ConsultantClientRecord_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "child",
            "in": "query",
            "description": " If true, will return only sub-records. If false, will return only primary client records.\r\nIf omitted, will return both. [Learn more](https://help.practicebetter.io/hc/en-us/articles/115007154147)",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "client",
            "in": "query",
            "description": " If true only return client records that have an active Practice Better user account linked.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "details",
            "in": "query",
            "description": " If true, will return addresses, contacts, insurance information and other details.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "modified_eq",
            "in": "query",
            "description": " Filter client records by date modified where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "modified_gte",
            "in": "query",
            "description": " Filter client records by date modified where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "modified_lte",
            "in": "query",
            "description": " Filter client records by date modified where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "status",
            "in": "query",
            "description": " A list of client statuses. Possible values are  `pendingcreate` `created`. A `pendingcreate` record\r\nis a prospective client that does not count towards your subscription limit. A prospective record turns into\r\na `created` client once you've added them to your account either manually or via an automation. [Learn more](https://help.practicebetter.io/hc/en-us/articles/360026475051)",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientRecord>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/records/{recordId}": {
      "get": {
        "tags": [
          "Client Records"
        ],
        "summary": "Get Client Record",
        "description": "A client record is the primary reference object for clients added to your account.\r\nThis object holds a client's name, email address, phone number, and other demographic\r\ninformation.\r\nReturns a client record with a given ID.",
        "operationId": "ConsultantClientRecord_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientRecord"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Client Records"
        ],
        "summary": "Update Client Record",
        "description": "Update a client record. Whenever making a request to this endpoint, ensure you make a request to GET the client record,\r\nupdate\r\nany desired fields, and push the entire (updated) client record back to this endpoint. Any missing fields in the post\r\nwill be erased from the client record.",
        "operationId": "ConsultantClientRecord_Update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientRecordUpdateFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientRecord"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Client Records"
        ],
        "summary": "Delete Client Record",
        "description": "Delete a client record",
        "operationId": "ConsultantClientRecord_Delete",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/taggables": {
      "put": {
        "tags": [
          "Client Records"
        ],
        "summary": "Update Tags",
        "description": "Add or remove tags from a client record.",
        "operationId": "ConsultantRelatedTags_Update",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/TagUpdateRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientRecord"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/availability/slots": {
      "get": {
        "tags": [
          "Consultant Availability"
        ],
        "summary": "Get Availability Slots",
        "description": "Returns a list of a consultant's availability slots by searching consultant's calendar while accounting for consultants booking settings.\r\nSee [Booking Settings](https://help.practicebetter.io/hc/en-us/articles/232318848-Booking-Cancellation-Settings).\r\nThe API does not support requesting sessions outside of a consultant's regular availability.",
        "operationId": "ConsultantAvailability_Slots",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "as_consultant",
            "in": "query",
            "description": "The ID of the consultant.",
            "required": true,
            "type": "string"
          },
          {
            "name": "day",
            "in": "query",
            "description": "The start date for checking the availability. The API will return availability slots beginning on this date spanning 30 days.",
            "required": true,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "location",
            "in": "query",
            "description": "The unique identifier of the location. If included, will additionally filter results based on location restrictions. See [Managing Availability](https://help.practicebetter.io/hc/en-us/articles/231968947-Managing-Your-Availability#h_ce737ff2-3447-4b5c-be99-55230cae6f01) and [Working with Multiple Locations](https://help.practicebetter.io/hc/en-us/articles/360000569011-Working-with-Multiple-Locations)",
            "required": false,
            "type": "string"
          },
          {
            "name": "package",
            "in": "query",
            "description": "The unique identifier of a client package. If included will additionally filter results based on the package expiry date. See [Package Expiry Dates](https://help.practicebetter.io/hc/en-us/articles/115002329552-Working-with-Packages#h_01EPN2ZTYDYD6D4HXJNDM5F29P)",
            "required": false,
            "type": "string"
          },
          {
            "name": "serviceId",
            "in": "query",
            "description": "The unique identifier of the service. The availability slots are based on the service.",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "in": "query",
            "description": "One of `face` (in-person), `phone`, `virtual` (telehealth). If included, will additionally filter results based on the service-method. See [Managing Availability](https://help.practicebetter.io/hc/en-us/articles/231968947-Managing-Your-Availability#h_ce737ff2-3447-4b5c-be99-55230cae6f01)",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/AvailabilityTimeSlot"
              }
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "204": {
            "description": "No Content",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/profile": {
      "get": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Get Consultant Profile",
        "operationId": "ConsultantProfile_Get",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "as_consultant",
            "description": "The ID of the consultant whose profile to retrieve. Omit to return the authenticated consultant's own profile. Requires the `settings:read` privilege on the target consultant when provided.",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/basic": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Basic Profile",
        "operationId": "ConsultantProfile_UpdateBasicProfile",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The basic profile fields to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantBasicProfileUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/social": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Social Settings",
        "operationId": "ConsultantProfile_UpdateSocialNetworkSettings",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The social network settings to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantSocialNetworkSettingsUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/availability": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Availability Settings",
        "operationId": "ConsultantProfile_UpdateAvailabilitySettings",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The availability settings to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantAvailabilitySettingsUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/booking": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Booking Settings",
        "operationId": "ConsultantProfile_UpdateBookingSettings",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The booking and calendar settings to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantBookingSettingsUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/print": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Print Settings",
        "operationId": "ConsultantProfile_UpdatePrintSettings",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The PDF print settings to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantPrintSettingsUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/protocols": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Protocol Settings",
        "operationId": "ConsultantProfile_UpdateProtocolSettings",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The supplement protocol settings to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantProtocolSettingsUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/profile/webanalytics": {
      "put": {
        "tags": [
          "Consultant Profile"
        ],
        "summary": "Update Web Analytics Settings",
        "operationId": "ConsultantProfile_UpdateWebAnalyticsSettings",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "The web analytics settings to update.",
            "schema": {
              "$ref": "#/definitions/ConsultantWebAnalyticsSettingsUpdateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Consultant"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "461": {
            "description": "Resource Access Denied",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ],
        "x-api-version": "6"
      }
    },
    "/consultant/dietlifestyle/{recordId}": {
      "post": {
        "tags": [
          "Diet & Lifestyle"
        ],
        "summary": "Create Profile",
        "description": "Create a Diet and Lifestyle Profile",
        "operationId": "ConsultantClientDietLifestyleProfile_Create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientDietLifestyleProfileFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientDietLifestyleProfile"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "409": {
            "description": "Conflict",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Diet & Lifestyle"
        ],
        "summary": "Get Profile",
        "description": "A diet and lifestyle profile contains information on a client's stressors, dietary restrictions,\r\nand other lifestyle markers. Returns the diet and lifestyle profile of a given client record.",
        "operationId": "ConsultantClientDietLifestyleProfile_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientDietLifestyleProfile"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "204": {
            "description": "No Content",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Diet & Lifestyle"
        ],
        "summary": "Update Profile",
        "description": "Update a Diet and Lifestyle Profile",
        "operationId": "ConsultantClientDietLifestyleProfile_Update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientDietLifestyleProfileFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientDietLifestyleProfile"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/formrequests": {
      "post": {
        "tags": [
          "Form Requests"
        ],
        "summary": "Create Form Requests",
        "operationId": "ConsultantFormRequest_SendRequests",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FormRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Form Requests"
        ],
        "summary": "List Form Requests",
        "description": "Returns a list of form requests sent to clients. Requests are returned in descending order, with the\r\nmost recent requests appearing first based on date created.",
        "operationId": "ConsultantFormRequest_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "completed",
            "in": "query",
            "description": " If true return requests completed by the client. If false return only incomplete requests. If omitted, return both.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose form requests should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "created_eq",
            "in": "query",
            "description": " Filter by the form date created where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "created_gte",
            "in": "query",
            "description": " Filter by the form date created where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "created_lte",
            "in": "query",
            "description": " Filter by the form date created where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose form requests should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<FormRequest>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/formrequests/{requestId}": {
      "get": {
        "tags": [
          "Form Requests"
        ],
        "summary": "Get Form Request",
        "description": "A form request contains a list of questions sent to a client to complete. Returns a form request with a given ID.",
        "operationId": "ConsultantFormRequest_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "notes",
            "in": "query",
            "description": "Include form notes in the form request.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "requestId",
            "in": "path",
            "description": "The unique identifier of the form request.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/FormRequest"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/forms": {
      "get": {
        "tags": [
          "Forms"
        ],
        "summary": "List Forms",
        "operationId": "ConsultantForm_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "team_for",
            "in": "query",
            "description": "Filter resources by team ownership. Values: 'all' (all team members), 'self' (authenticated user only), 'other' (other team members excluding self), 'in' (specific subset via team_ids). Defaults to 'self or shared' when not specified.",
            "required": false,
            "type": "string"
          },
          {
            "name": "types",
            "in": "query",
            "description": "Filter by form type. Can specify multiple values. Available types: form (standard forms), quiz (auto-graded), waiver (consent forms), attachment (file uploads). Note: For API versions before 4.3, quizzes are excluded by default; use ?types=quiz to include them explicitly.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "form",
                "quiz",
                "waiver",
                "attachment"
              ]
            },
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Form>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/insurance/cms1500": {
      "get": {
        "tags": [
          "Insurance Claims"
        ],
        "summary": "List CMS-1500 Forms",
        "description": "Returns a list of CMS-1500 forms. Forms are returned in descending order, with the most recent forms appearing first\r\nbased on the date created.",
        "operationId": "Cms1500Form_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose CMS-1500 forms should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "date_eq",
            "in": "query",
            "description": " Filter by the CMS-1500 issue date where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_gte",
            "in": "query",
            "description": " Filter by the CMS-1500 issue date where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_lte",
            "in": "query",
            "description": " Filter by the CMS-1500 issue date where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose client packages should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "submissionstatus",
            "in": "query",
            "description": " The submission statuses of the CMS-1500 forms to retrieve.\r\n Possible values are `draft` `batched` `submitted` `processing` `paid`.",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Cms1500Form>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/insurance/cms1500/{formId}": {
      "get": {
        "tags": [
          "Insurance Claims"
        ],
        "summary": "Get CMS-1500 Form",
        "description": "A CMS-1500 Form is used to submit claims for reimbursement of services rendered to clients.\r\n[Learn more](https://help.practicebetter.io/hc/en-us/articles/360024791231)\r\n\r\nReturns a CMS-1500 form with a given ID.",
        "operationId": "Cms1500Form_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "formId",
            "in": "path",
            "description": "The unique identifier of the CMS-1500 form.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Cms1500Form"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/payments/invoices": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "List Invoices",
        "description": "Returns a list of client invoices. Invoices are returned in descending order, with the most recent invoices appearing first\r\nbased on date created.",
        "operationId": "ConsultantInvoice_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose invoices should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "invoicedate_eq",
            "in": "query",
            "description": " Filter the invoices by invoice date where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "invoicedate_gte",
            "in": "query",
            "description": " Filter the invoices by invoice date where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "invoicedate_lte",
            "in": "query",
            "description": " Filter the invoices by invoice date where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "paymentstatus",
            "in": "query",
            "description": " The payment statuses of the invoices to retrieve. Possible values are `unpaid` `partial` `paid`.",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose invoices should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ConsultantInvoice>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/payments/invoices/{invoiceId}": {
      "get": {
        "tags": [
          "Invoices"
        ],
        "summary": "Get Invoice",
        "description": "Returns an invoice with a given ID.",
        "operationId": "ConsultantInvoice_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "description": "The unique identifier of the invoice.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ConsultantInvoice"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/user/journalentries": {
      "get": {
        "tags": [
          "Journals"
        ],
        "summary": "List Entries",
        "description": "Returns a list of journal entries. Entries are returned in descending order, with the most recent entries appearing first based\r\non date created.\r\n            \r\nClient can create multiple types of entries in their journals including activity, sleep, bowel movement and via\r\n3rd party integrations like Apple Health and Fitbit.",
        "operationId": "JournalEntry_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "entrydate_eq",
            "in": "query",
            "description": " Filter entries by entry date where the date equals the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "entrydate_gte",
            "in": "query",
            "description": " Filter entries by entry date where the date is greater than or equal to the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "entrydate_lte",
            "in": "query",
            "description": " Filter entries by entry date where the date is less than or equal to the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "journals",
            "in": "query",
            "description": " Filter the entries created within these journal IDs.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose journal entries should be retrieved.",
            "required": true,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "types",
            "in": "query",
            "description": " The types of entries to retrieve. Possible values are : `activity` `applehealthlifestyle` `applehealthnutrition`\r\n `bowel` `cronometerdiaryfood` `cronometerdiarymetric` `fitbit` `garmin` `ouraring` `foodintake` `foodintakesummary` `foodsnapshot` `measurements`\r\n `mood` `note` `sleep` `water`.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/JournalDaySummary"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "204": {
            "description": "No Content",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/labrequests": {
      "get": {
        "tags": [
          "Lab Requests"
        ],
        "summary": "List Lab Requests",
        "description": "Returns a list of lab requests including labs synced from integration partners (e.g. Evexia, Fullscript).\r\nLabs are returned in descending order, with the most recent labs appearing first based on order date.",
        "operationId": "ConsultantLabRequest_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose lab requests should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "created_eq",
            "in": "query",
            "description": " Filter by the lab request date created where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "created_gte",
            "in": "query",
            "description": " Filter by the lab request date created where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "created_lte",
            "in": "query",
            "description": " Filter by the lab request date created where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose lab requests should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "requeststatus",
            "in": "query",
            "description": " The request statuses of the lab requests to retrieve. Possible values are \r\n`inprogress` `requisitionready` `resultsready` `cancelled`.",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<LabRequestBase>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/labrequests/{labRequestId}": {
      "get": {
        "tags": [
          "Lab Requests"
        ],
        "summary": "Get Lab Request",
        "description": "Lab requests can be created and tracked manually or automatically submitted and updated using one of\r\nour integration partners. Returns a lab request with a given ID.",
        "operationId": "ConsultantLabRequest_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "labRequestId",
            "in": "path",
            "description": "The unique identifier of the lab request.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/LabRequestBase"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/labrequests/{labRequestId}/attachments/{itemId}": {
      "get": {
        "tags": [
          "Lab Requests"
        ],
        "summary": "Get Lab Request Attachment",
        "description": "Get the details of a lab request attachment. The attachment can be downloaded by setting the query parameter `alt` to media (`alt=media`).\r\n            \r\nReturns a lab request attachment with a given lab request ID and attachment ID.",
        "operationId": "ConsultantLabRequest_GetAttachment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "alt",
            "in": "query",
            "description": "Set to `media` to download the attachment file. In this case, the response will be a redirect to the location where the file could be downloaded.",
            "required": false,
            "type": "string"
          },
          {
            "name": "itemId",
            "in": "path",
            "description": "The unique identifier of the attachment.",
            "required": true,
            "type": "string"
          },
          {
            "name": "labRequestId",
            "in": "path",
            "description": "The unique identifier of the lab request.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MediaItem"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "302": {
            "description": "Redirect",
            "headers": {
              "Location": {
                "type": "string"
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/measurements/{recordId}/blood": {
      "post": {
        "tags": [
          "Measurements - Blood"
        ],
        "summary": "Create Blood Measurement",
        "description": "When creating a blood measurement, if an entry already exists for the specified date of the entry, it will overwrite the\r\nexisting entry with the new one.",
        "operationId": "ConsultantClientBloodMeasurements_Save",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientBloodMeasurements"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientBloodMeasurements"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Measurements - Blood"
        ],
        "summary": "List Blood Measurements",
        "description": "Returns a list of blood measurements for a given client record. Measurements are returned in descending order,\r\nwith the most recent entries appearing first based on date created.\r\n            \r\nEntries will only contain populated properties. Any entries which do not have at least one non-empty\r\nmeasurement won't be returned.",
        "operationId": "ConsultantClientBloodMeasurements_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "entrydate_eq",
            "in": "query",
            "description": " Filter the measurements by entry date where the date equals the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "entrydate_gte",
            "in": "query",
            "description": " Filter the measurements by entry date where the date is greater than or equal to the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "entrydate_lte",
            "in": "query",
            "description": " Filter the measurements by entry date where the date is less than or equal to the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientBloodMeasurements>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Measurements - Blood"
        ],
        "summary": "Update Blood Measurement",
        "operationId": "ConsultantClientBloodMeasurements_Update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientBloodMeasurements"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientBloodMeasurements"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Measurements - Blood"
        ],
        "summary": "Delete Blood Measurement",
        "operationId": "ConsultantClientBloodMeasurements_Delete",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "measurementsId",
            "in": "query",
            "description": "The unique identifier of the measurement.",
            "required": true,
            "type": "string"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/measurements/{recordId}/blood/{measurementsId}": {
      "get": {
        "tags": [
          "Measurements - Blood"
        ],
        "summary": "Get Blood Measurement",
        "operationId": "ConsultantClientBloodMeasurements_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "measurementsId",
            "in": "path",
            "description": "The unique identifier of the measurement.",
            "required": true,
            "type": "string"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientBloodMeasurements"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/measurements/{recordId}/body": {
      "post": {
        "tags": [
          "Measurements - Body"
        ],
        "summary": "Create Body Measurement",
        "description": "When creating a body measurement, if an entry already exists for the specified date of the entry, it will overwrite the\r\nexisting entry with the new one.",
        "operationId": "ConsultantClientMeasurements_Save",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientMeasurementsFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMeasurements"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Measurements - Body"
        ],
        "summary": "List Body Measurements",
        "description": "Returns a list of body measurements and vitals for a given client record. Entries are returned in descending order, with the\r\nmost recent entries appearing first based on date created.\r\n            \r\nEntries will only contain populated properties. Any entries that do not have at least one non-empty\r\nmeasurement will not be returned.",
        "operationId": "ConsultantClientMeasurements_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "entrydate_eq",
            "in": "query",
            "description": " Filter the measurements by entry date where the date equals the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "entrydate_gte",
            "in": "query",
            "description": " Filter the measurements by entry date where the date is greater than or equal to the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "entrydate_lte",
            "in": "query",
            "description": " Filter the measurements by entry date where the date is less than or equal to the query parameter e.g. `1970-01-01`",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientMeasurements>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Measurements - Body"
        ],
        "summary": "Update Body Measurement",
        "operationId": "ConsultantClientMeasurements_Update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientMeasurementsFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMeasurements"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Measurements - Body"
        ],
        "summary": "Delete Body Measurement",
        "operationId": "ConsultantClientMeasurements_Delete",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "measurementsId",
            "in": "query",
            "description": "The unique identifier of the measurement.",
            "required": true,
            "type": "string"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/measurements/{recordId}/body/{measurementsId}": {
      "get": {
        "tags": [
          "Measurements - Body"
        ],
        "summary": "Get Body Measurement",
        "operationId": "ConsultantClientMeasurements_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "measurementsId",
            "in": "path",
            "description": "The unique identifier of the measurement.",
            "required": true,
            "type": "string"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMeasurements"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/media/{itemId}": {
      "get": {
        "tags": [
          "Media Items"
        ],
        "summary": "Get Media Item",
        "description": "Get the details of a media item. The media item can be downloaded by setting the query parameter `alt` to media (`alt=media`).",
        "operationId": "ConsultantMedia_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "alt",
            "in": "query",
            "description": "Set to `media` to download the attachment file. In this case, the response will be a\r\n            redirect to the location where the file could be downloaded.",
            "required": false,
            "type": "string"
          },
          {
            "name": "as_consultant",
            "in": "query",
            "description": "The unique identifier of the consultant to assume for this operation.",
            "required": false,
            "type": "string"
          },
          {
            "name": "itemId",
            "in": "path",
            "description": "The unique identifier of the media item.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MediaItem"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "302": {
            "description": "Redirect",
            "headers": {
              "Location": {
                "type": "string"
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/medicalhistory/{recordId}": {
      "post": {
        "tags": [
          "Medical History"
        ],
        "summary": "Create Profile",
        "description": "Create a Medical History Profile. If the client already has a medical profile this operation will fail. Use the update endpoint instead.",
        "operationId": "ConsultantClientMedicalHistory_Create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientMedicalHistoryFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMedicalHistory"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "409": {
            "description": "Conflict",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Medical History"
        ],
        "summary": "Get Profile",
        "description": "A medical history profile contains information on a client's personal and family health history.\r\nReturns a medical history profile for a given client record.",
        "operationId": "ConsultantClientMedicalHistory_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMedicalHistory"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "204": {
            "description": "No Content",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Medical History"
        ],
        "summary": "Update Profile",
        "operationId": "ConsultantClientMedicalHistory_Update",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientMedicalHistoryFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMedicalHistory"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/medicalhistory/{recordId}/healthproducts": {
      "post": {
        "tags": [
          "Medical History Health Products"
        ],
        "summary": "Create Health Product",
        "operationId": "ConsultantClientMedicalHistory_CreateHealthProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientHealthProductBaseFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "string"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Medical History Health Products"
        ],
        "summary": "Get Health Products",
        "description": "A medical history profile instance is returned but only the various\r\nhealth product lists are populated for a given client record.",
        "operationId": "ConsultantClientMedicalHistory_GetHealthProducts",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientMedicalHistory"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "204": {
            "description": "No Content",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "put": {
        "tags": [
          "Medical History Health Products"
        ],
        "summary": "Update Health Product",
        "operationId": "ConsultantClientMedicalHistory_UpdateHealthProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientHealthProductBaseFragment"
            }
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/medicalhistory/{recordId}/healthproducts/{productId}": {
      "delete": {
        "tags": [
          "Medical History Health Products"
        ],
        "summary": "Delete Health Product",
        "operationId": "ConsultantClientMedicalHistory_DeleteHealthProduct",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "productId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "recordId",
            "in": "path",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/courses": {
      "get": {
        "tags": [
          "Programs & Courses"
        ],
        "summary": "List Programs",
        "description": "Returns a list of programs.",
        "operationId": "ConsultantCourse_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose programs should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "team_for",
            "in": "query",
            "description": "Filter resources by team ownership. Values: 'all' (all team members), 'self' (authenticated user only), 'other' (other team members excluding self), 'in' (specific subset via team_ids). Defaults to 'self or shared' when not specified.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Course>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/courses/{courseId}": {
      "get": {
        "tags": [
          "Programs & Courses"
        ],
        "summary": "Get Program",
        "description": "Programs and courses allow you to share your knowledge and expertise with multiple clients at once.\r\nContent can be organized in modules and released to clients at later dates within the Client Portal\r\nor via email notifications. [Learn more](https://help.practicebetter.io/hc/en-us/articles/360001327732)\r\n\r\nReturns a program with a given ID.",
        "operationId": "ConsultantCourse_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "courseId",
            "in": "path",
            "description": "The unique identifier of the program.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Course"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/courses/aicontentgenerator": {
      "post": {
        "tags": [
          "Programs & Courses"
        ],
        "operationId": "ConsultantCourse_ProcessAiModuleContentPrompt",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AiModuleContentRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ModuleContentResponse"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/courses/{courseId}/enrollments": {
      "post": {
        "tags": [
          "Programs & Courses"
        ],
        "summary": "Register Clients",
        "description": "Register clients into a program.",
        "operationId": "ConsultantCourseEnrollment_AddEnrollments",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "courseId",
            "in": "path",
            "description": "The unique identifier of the program.",
            "required": true,
            "type": "string"
          },
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CourseEnrollmentCreateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Programs & Courses"
        ],
        "summary": "List Program Enrollments",
        "description": "Returns a list of enrollments in a program. Enrollments will be returned in descending order, with\r\nthe most recently registered enrollments appearing first.",
        "operationId": "ConsultantCourseEnrollment_GetEnrollments",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "courseId",
            "in": "path",
            "description": "The unique identifier of the program.",
            "required": true,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<CourseEnrollment>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Programs & Courses"
        ],
        "summary": "Unregister Client",
        "description": "Unregister a client from a program.",
        "operationId": "ConsultantCourseEnrollment_DeleteEnrollment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "courseId",
            "in": "path",
            "description": "The unique identifier of the program.",
            "required": true,
            "type": "string"
          },
          {
            "name": "purge",
            "in": "query",
            "description": "If true, will delete all forms, tasks, and protocols sent to client as part of this program.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "purgechat",
            "in": "query",
            "description": "If true, will remove client from the program's group chat.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "purgechatmessages",
            "in": "query",
            "description": "If true, will remove the client's messages from the program's group chat.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "purgesessionenrollments",
            "in": "query",
            "description": "If true, will remove client from any upcoming group sessions.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "recordId",
            "in": "query",
            "description": "The unique identifier of the client record.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/protocols": {
      "get": {
        "tags": [
          "Protocols"
        ],
        "summary": "List Protocols",
        "description": "Returns a list of protocols. Protocols are returned in descending order, with the most recent protocols appearing first\r\nbased on date created.",
        "operationId": "ConsultantProtocol_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose protocols should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose protocols should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "team_for",
            "in": "query",
            "description": "Filter resources by team ownership. Values: 'all' (all team members), 'self' (authenticated user only), 'other' (other team members excluding self), 'in' (specific subset via team_ids). Defaults to 'self or shared' when not specified.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Protocol>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/protocols/{protocolId}": {
      "get": {
        "tags": [
          "Protocols"
        ],
        "summary": "Get Protocol",
        "description": "A protocol allows you to combine food, supplement, and lifestyle recommendations to share with a client.\r\nSupplement recommendations can be created using 3rd party supplement dispensaries.\r\n            \r\nReturns a protocol with a given ID.",
        "operationId": "ConsultantProtocol_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "alt",
            "in": "query",
            "description": "Set to `media` to download the protocol as a PDF.",
            "required": false,
            "type": "string"
          },
          {
            "name": "protocolId",
            "in": "path",
            "description": "The unique identifier of the protocol.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Protocol"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/protocols/{protocolId}/attachments/{itemId}": {
      "get": {
        "tags": [
          "Protocols"
        ],
        "summary": "Get Protocol Attachment",
        "description": "Get the details of a protocol attachment. The attachment can be downloaded by setting the query parameter `alt` to `media` (`alt=media`).\r\n            \r\nReturns a protocol attachment with a given protocol ID and attachment ID.",
        "operationId": "ConsultantProtocol_GetAttachment",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "alt",
            "in": "query",
            "description": "Set to `media` to download the attachment file. In this case, the response will be a\r\n             redirect to the location where the file could be downloaded.",
            "required": false,
            "type": "string"
          },
          {
            "name": "itemId",
            "in": "path",
            "description": "The unique identifier of the attachment.",
            "required": true,
            "type": "string"
          },
          {
            "name": "protocolId",
            "in": "path",
            "description": "The unique identifier of the protocol.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/MediaItem"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "302": {
            "description": "Redirect",
            "headers": {
              "Location": {
                "type": "string"
              }
            }
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/reports/insurance/claims": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Insurance Claims",
        "description": "Returns a summary of insurance claims that have been sent to an integrated insurance partner",
        "operationId": "InsuranceReports_GetInsuranceClaimsForPeriod",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/InsuranceClaimsRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/InsuranceClaimsReport"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/reports/billing/paymenthistory": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Payment History",
        "description": "Returns a summary of payments collected and the payment history for a given period.",
        "operationId": "BillingReports_GetPaymentsForPeriod",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PaymentSummaryRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/PaymentHistoryReport"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/reports/billing/statement": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Transaction Statement",
        "description": "Retrieve transaction details within a specified period.",
        "operationId": "BillingReports_GetTransactionStatementForPeriod",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PaymentSummaryRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TransactionStatementReport"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/reports/billing/salestax": {
      "post": {
        "tags": [
          "Reports"
        ],
        "summary": "Sales Tax",
        "description": "Retrieve sales tax information for payments processed within a given period.",
        "operationId": "BillingReports_GetSalesTaxSummaryForPeriod",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SalesTaxSummaryRequestFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/SalesTaxReport"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/packages": {
      "get": {
        "tags": [
          "Services & Packages"
        ],
        "summary": "List Packages",
        "description": "Returns a list of packages.",
        "operationId": "ConsultantClientPackage_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientPackage>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/services": {
      "get": {
        "tags": [
          "Services & Packages"
        ],
        "summary": "List Services",
        "description": "Returns a list of services.",
        "operationId": "ConsultantProfessionalService_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "team_for",
            "in": "query",
            "description": "Filter resources by team ownership. Values: 'all' (all team members), 'self' (authenticated user only), 'other' (other team members excluding self), 'in' (specific subset via team_ids). Defaults to 'self or shared' when not specified.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ProfessionalService>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/sessionnotes": {
      "get": {
        "tags": [
          "Session Notes"
        ],
        "summary": "List Session Notes",
        "description": "Returns a list of session notes. Notes are returned in descending order, with the most recent notes appearing first\r\nbased on the date created.",
        "operationId": "ConsultantClientSessionNotes_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "completion",
            "in": "query",
            "description": " The completion status of the notes. Possible values are `notstarted` `inprogress` `completed`.",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose notes should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "date_eq",
            "in": "query",
            "description": " Filter notes by session date where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_gte",
            "in": "query",
            "description": " Filter notes by session date where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_lte",
            "in": "query",
            "description": " Filter notes by session date where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client record ids whose notes should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "team_for",
            "in": "query",
            "description": "Filter resources by team ownership. Values: 'all' (all team members), 'self' (authenticated user only), 'other' (other team members excluding self), 'in' (specific subset via team_ids). Defaults to 'self or shared' when not specified.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientSessionNotes>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/sessionnotes/{notesId}": {
      "get": {
        "tags": [
          "Session Notes"
        ],
        "summary": "Get Session Notes",
        "description": "Session notes allow you to chart and record information from recent appointments, forms, and other interactions with\r\nclients.\r\n\r\nReturns a session note with a given ID.",
        "operationId": "ConsultantClientSessionNotes_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "notesId",
            "in": "path",
            "description": "The unique identifier of the session note.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientSessionNotes"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/sessions": {
      "post": {
        "tags": [
          "Sessions"
        ],
        "summary": "Book a Session",
        "description": "Book a session for a client.",
        "operationId": "ConsultantClientSession_Create",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientSessionCreateFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientSession"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      },
      "get": {
        "tags": [
          "Sessions"
        ],
        "summary": "List Sessions",
        "description": "Returns a list of sessions. Sessions are returned in descending order, with the most recent sessions appearing\r\nfirst based on date created.",
        "operationId": "ConsultantClientSession_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose sessions should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "date_eq",
            "in": "query",
            "description": " Filter sessions by session date where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_gte",
            "in": "query",
            "description": " Filter sessions by session date where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_lte",
            "in": "query",
            "description": " Filter sessions by session date where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "group",
            "in": "query",
            "description": " If true, will return group sessions. If false, will return 1-1 sessions. If omitted, will return both.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose sessions should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "services",
            "in": "query",
            "description": " Retrieve sessions associated with these service IDs.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<ClientSession>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/sessions/{sessionId}": {
      "get": {
        "tags": [
          "Sessions"
        ],
        "summary": "Get Session",
        "description": "A session (or appointment) is a scheduled one-on-one or group meeting with one or more clients. Returns\r\na session with a given ID.",
        "operationId": "ConsultantClientSession_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recordId",
            "in": "query",
            "description": "For a group session, the client record ID can be specified to retrieve resources associated with their enrollment.",
            "required": false,
            "type": "string"
          },
          {
            "name": "sessionId",
            "in": "path",
            "description": "The unique identifier of the session.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ClientSession"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Sessions"
        ],
        "summary": "Delete a Session",
        "operationId": "ConsultantClientSession_Delete",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "description": "The unique identifiers of the session",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/sessions/{sessionId}/cancel": {
      "post": {
        "tags": [
          "Sessions"
        ],
        "summary": "Cancel a Session",
        "operationId": "ConsultantClientSession_Cancel",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientSessionCancellationFragment"
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "description": "The unique session Identifier",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "202": {
            "description": "Accepted",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/sessions/{sessionId}/date": {
      "put": {
        "tags": [
          "Sessions"
        ],
        "summary": "Reschedule Session",
        "description": "Reschedule a session and/or update the session duration.",
        "operationId": "ConsultantClientSession_UpdateSessionDate",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "fragment",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ClientSessionDateFragment"
            }
          },
          {
            "name": "sessionId",
            "in": "path",
            "description": "The unique identifier of the session.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "object"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          },
          "409": {
            "description": "Conflict",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/insurance/superbills": {
      "get": {
        "tags": [
          "Superbills"
        ],
        "summary": "List Superbills",
        "description": "Returns a list of superbills. Superbills are returned in descending order, with the most recent superbills appearing first\r\nbased on date created.",
        "operationId": "ConsultantSuperbill_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose superbills should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "date_eq",
            "in": "query",
            "description": " Filter superbills by the date issued where the date equals the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_gte",
            "in": "query",
            "description": " Filter superbills by the date issued where the date is greater than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "date_lte",
            "in": "query",
            "description": " Filter superbills by the date issued where the date is less than or equal to the query parameter e.g. `1970-01-01T12:30:00-04:00`",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose superbills should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Superbill>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/insurance/superbills/{billId}": {
      "get": {
        "tags": [
          "Superbills"
        ],
        "summary": "Get Superbill",
        "description": "A superbill outlines the services rendered by a practitioner and the procedure codes and diagnosis codes associated with the\r\ntreatments provided.\r\n            \r\nReturns a superbill for a given ID.",
        "operationId": "ConsultantSuperbill_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "billId",
            "in": "path",
            "description": "The unique identifier for the superbill.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Superbill"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/tags": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "List Tags",
        "description": "Tags allow you to organize clients (e.g. by office location) and keep track of their progress\r\nand milestones (e.g. `3WeekCheckpoint`).\r\n            \r\nReturns a list of tags in descending order based on date created.",
        "operationId": "Tag_List",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "filter",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Tag>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Create Tag",
        "operationId": "Tag_Save",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/TagFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tag"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/tags/{tagId}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Get Tag",
        "operationId": "Tag_Get",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "description": "The unique identifier of the tag.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tag"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      },
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Delete Tag",
        "operationId": "Tag_Delete",
        "parameters": [
          {
            "in": "path",
            "name": "tagId",
            "description": "The unique identifier of the tag.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read",
              "write"
            ]
          }
        ]
      }
    },
    "/consultant/reminders/{reminderId}": {
      "get": {
        "tags": [
          "Tasks"
        ],
        "summary": "Get Task",
        "description": "Tasks allow you to keep track of to-do items for you, your clients and other team members.\r\n[Learn more](https://help.practicebetter.io/hc/en-us/sections/360011979612)\r\n            \r\nReturns a task with a given ID.",
        "operationId": "ConsultantReminder_Get",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "recurring",
            "in": "query",
            "description": "If linked to a recurring series, additionally return the automation with details about the recurrence.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "reminderId",
            "in": "path",
            "description": "The unique identifier of the task.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Reminder"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          },
          "404": {
            "description": "Not Found",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/consultant/reminders": {
      "get": {
        "tags": [
          "Tasks"
        ],
        "summary": "List Tasks",
        "description": "Returns a list of tasks. Tasks are returned in descending order, with the most recent tasks appearing first\r\nbased on date created.",
        "operationId": "ConsultantReminder_List",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "after_id",
            "in": "query",
            "description": " Return objects that come after this ID. Use this to fetch more objects if the list is sorted\r\nin ascending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "before_id",
            "in": "query",
            "description": " Return objects that come before this ID. Use this to fetch more objects if the list is sorted\r\nin descending order.",
            "required": false,
            "type": "string"
          },
          {
            "name": "completed",
            "in": "query",
            "description": " If true return completed tasks. If false return only pending tasks. If omitted, return both.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "consultants",
            "in": "query",
            "description": " The IDs of the consultants whose tasks should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "limit",
            "in": "query",
            "description": " A limit on the number of objects to return between 1 and 100.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "records",
            "in": "query",
            "description": " The IDs of the client records whose tasks should be retrieved.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "skip",
            "in": "query",
            "description": " **[Deprecated]** Return objects starting from this offset. Defaults to 0. \\\r\nThis parameter will be removed in a future release. Use `after_id=id` or `before_id=id` to fetch more objects if the list\r\nis sorted in ascending or descending order, respectively. \\\r\n**Effective September 15, 2025, this parameter will be limited to a lower maximum value.**",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "team_for",
            "in": "query",
            "description": "Filter resources by team ownership. Values: 'all' (all team members), 'self' (authenticated user only), 'other' (other team members excluding self), 'in' (specific subset via team_ids). Defaults to 'self or shared' when not specified.",
            "required": false,
            "type": "string"
          },
          {
            "name": "type",
            "in": "query",
            "description": " The task type, i.e. personal task or client task. Possible values are `consultant` `client`.",
            "required": false,
            "type": "array",
            "items": {},
            "collectionFormat": "multi"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Reminder>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/company/administration/members": {
      "get": {
        "tags": [
          "Team Members"
        ],
        "summary": "List Consultants",
        "description": "The consultant object represents either a practitioner or administrative user associated with your account.\r\n            \r\nReturns a list of practitioners and admin users.",
        "operationId": "ConsultantAdministration_List",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<Consultant>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/timezones": {
      "get": {
        "tags": [
          "Timezones"
        ],
        "summary": "Supported Timezones",
        "operationId": "TimeZone_List",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "uniqueItems": true,
              "items": {
                "$ref": "#/definitions/TimeZoneDescriptor"
              }
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ]
      }
    },
    "/webhooks/delivery": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List deliveries",
        "operationId": "WebhookDelivery_List",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "endDate",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "eventType",
            "type": "string"
          },
          {
            "in": "query",
            "name": "maxAttempts",
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "minAttempts",
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "page",
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "pageSize",
            "type": "integer",
            "format": "int32"
          },
          {
            "in": "query",
            "name": "startDate",
            "type": "string",
            "format": "date-time"
          },
          {
            "in": "query",
            "name": "status",
            "type": "string"
          },
          {
            "in": "query",
            "name": "subscriptionId",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<WebhookDelivery>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6.3"
      }
    },
    "/webhooks/subscription": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List subscriptions",
        "operationId": "WebhookSubscription_List",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "eventType",
            "type": "string"
          },
          {
            "in": "query",
            "name": "isActive",
            "type": "boolean"
          },
          {
            "in": "query",
            "name": "status",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Collection<WebhookSubscription>"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6.3"
      },
      "post": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Create a subscription",
        "description": "Creates a webhook subscription. Practice Better first verifies your endpoint with a one-time\r\nhandshake; once verified, events are delivered to your endpoint as signed HTTP POST requests.\r\n            \r\n**Endpoint Verification (one-time handshake)**\r\n            \r\nOn creation, Practice Better sends a single HTTP **GET** request to your `endpointUrl` with two\r\nquery parameters: `challenge` and `verification_token` (the token supplied in this request). This\r\nrequest is **not** signed. Your endpoint must:\r\n1. Confirm `verification_token` matches the value you configured.\r\n2. Respond with HTTP 200 and a JSON body echoing the challenge:\r\n   `{ \"challenge\": \"<value from the challenge query param>\", \"timestamp\": 1700000000 }`\r\n   The `timestamp` must be the **current Unix time in seconds** — a 10-digit integer such as\r\n   `1700000000`. Do **not** send milliseconds (e.g. JavaScript's `Date.now()`, a 13-digit value)\r\n   or an ISO date string; a milliseconds value is ~1000× too large and is rejected as out of range.\r\n   The timestamp must be within ±5 minutes of the current time.\r\n   Return the JSON body directly with the 200 status — not an HTML page or a redirect. (For example,\r\n   a Google Apps Script Web App must return `ContentService` JSON output; its default `/exec`\r\n   response is HTML/redirect, which fails verification.)\r\n            \r\nIf verification fails, this request returns 400 and the subscription is not activated. The\r\n`endpointUrl` is used exactly as registered (no trailing-slash, www, or scheme normalization), so\r\nregister the final canonical URL. Verification and event requests carry the header\r\n`User-Agent: PracticeBetter-Webhooks/1.0`.\r\n            \r\n**Your signing secret (shown once):** On success, the response includes `plaintextSigningSecret`,\r\nreturned only at creation. Store it securely — it is the HMAC key for all future event POSTs, and is\r\ndistinct from the `verificationToken` used in the handshake above.\r\n            \r\n**IMPORTANT: Webhook Security (ongoing event POSTs)**\r\n            \r\nAll webhook event requests include an HMAC-SHA256 signature in the `PB-Signature` header.\r\nYou MUST validate this signature to ensure webhooks are from Practice Better and haven't been tampered with.\r\n            \r\n**PB-Signature Header Format:**\r\n```\r\nPB-Signature: t=1735560000,v1=8a3f2b1c4d5e...\r\n```\r\n            \r\n**How to Validate Signatures:**\r\n            \r\n1. Extract the timestamp (t) and signature (v1) from the header\r\n2. Compute the expected signature: `HMAC-SHA256(secret, timestamp + \".\" + request_body)`\r\n3. Compare signatures using constant-time comparison\r\n4. Verify timestamp is within ±5 minutes to prevent replay attacks\r\n            \r\n**Example (Node.js):**\r\n```javascript\r\nconst crypto = require('crypto');\r\n            \r\n// `rawBody` must be the exact body string/bytes as received — capture it BEFORE JSON parsing.\r\n// In Express, use the `express.raw()` middleware (or a `verify` callback that stashes req.rawBody).\r\nfunction validateWebhook(request, rawBody, secret) {\r\n  const signature = request.headers['pb-signature'];\r\n  const [timestamp, sig] = signature.split(',').map(s => s.split('=')[1]);\r\n            \r\n  // Verify timestamp (±5 minutes)\r\n  const now = Math.floor(Date.now() / 1000);\r\n  if (Math.abs(now - parseInt(timestamp)) > 300) {\r\n    return false; // Replay attack\r\n  }\r\n            \r\n  // Compute expected signature over `{timestamp}.{rawBody}` using the RAW body exactly as\r\n  // received. Do NOT re-serialize a parsed object (e.g. JSON.stringify(parsedBody)): differences\r\n  // in key order or whitespace change the bytes and will break signature validation.\r\n  const message = `${timestamp}.${rawBody}`;\r\n  const expected = crypto.createHmac('sha256', secret).update(message).digest('hex');\r\n            \r\n  // Constant-time comparison\r\n  return crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));\r\n}\r\n```\r\n            \r\n**Security Notes:**\r\n- Store your webhook secret securely (environment variables, secrets manager)\r\n- Use constant-time comparison to prevent timing attacks\r\n- Validate timestamp to prevent replay attacks\r\n- Return 401 Unauthorized for invalid signatures",
        "operationId": "WebhookSubscription_Create",
        "consumes": [
          "application/json-patch+json",
          "application/json",
          "application/*+json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "schema": {
              "$ref": "#/definitions/CreateWebhookSubscriptionFragment"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WebhookSubscription"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6.3"
      }
    },
    "/webhooks/subscription/event/types": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "List available event types",
        "description": "Returns all webhook event types supported by Practice Better, grouped by category.\r\n            \r\n**Response Structure:**\r\n```json\r\n[\r\n  {\r\n    \"name\": \"Client Records\",\r\n    \"eventTypes\": [\r\n      { \"label\": \"Client Record Created\", \"value\": \"client.record.created\" },\r\n      { \"label\": \"Client Record Updated\", \"value\": \"client.record.updated\" }\r\n    ]\r\n  }\r\n]\r\n```\r\n            \r\nUse the `value` field when specifying event types in webhook subscription requests.",
        "operationId": "WebhookSubscription_GetEventTypes",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/WebhookEventTypeCategory"
              }
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6.3"
      }
    },
    "/webhooks/subscription/{subscriptionId}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Get a subscription",
        "operationId": "WebhookSubscription_Get",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "subscriptionId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/WebhookSubscription"
            },
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6.3"
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "summary": "Delete a subscription",
        "operationId": "WebhookSubscription_Delete",
        "parameters": [
          {
            "in": "path",
            "name": "subscriptionId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {}
          },
          "400": {
            "description": "Bad Request",
            "headers": {}
          },
          "401": {
            "description": "Unauthorized",
            "headers": {}
          },
          "403": {
            "description": "Forbidden",
            "headers": {}
          },
          "429": {
            "description": "Too Many Requests",
            "headers": {}
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {}
          }
        },
        "security": [
          {
            "oauth2": [
              "read"
            ]
          }
        ],
        "x-api-version": "6.3"
      }
    }
  },
  "definitions": {
    "ActivityEntry": {
      "type": "object",
      "properties": {
        "calories": {
          "format": "double",
          "type": "number"
        },
        "category": {
          "type": "string"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "duration": {
          "format": "double",
          "type": "number"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "location": {
          "type": "string"
        },
        "moodAfter": {
          "type": "string"
        },
        "moodBefore": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "Address": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string",
          "description": " ISO 3166 Alpha-2 country code (e.g. US, AU, GB). See https://www.iban.com/country-codes for the complete list.",
          "maxLength": 3
        },
        "floor": {
          "type": "string",
          "description": " The floor number within a building.",
          "maxLength": 20
        },
        "locality": {
          "type": "string",
          "description": " The city or town name.",
          "maxLength": 40
        },
        "postalCode": {
          "type": "string",
          "description": " The postal or ZIP code.",
          "format": "postal-code",
          "maxLength": 15
        },
        "region": {
          "type": "string",
          "description": " The state, province, or region name.",
          "maxLength": 40
        },
        "street": {
          "type": "string",
          "description": " The street address line (e.g. 123 Main St).",
          "maxLength": 100
        },
        "unit": {
          "type": "string",
          "description": " The suite, apartment, or unit number (e.g. Suite 200, Apt 4B).",
          "maxLength": 20
        }
      },
      "additionalProperties": false
    },
    "AiModuleContentRequestFragment": {
      "required": [
        "description",
        "typeOfClients",
        "detailLevel"
      ],
      "type": "object",
      "properties": {
        "asConsultantId": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "detailLevel": {
          "type": "string"
        },
        "typeOfClients": {
          "type": "string"
        }
      }
    },
    "AppleHealthKitActivitySummary": {
      "type": "object",
      "properties": {
        "activityEnergy": {
          "format": "double",
          "type": "number"
        },
        "activityEnergyGoal": {
          "format": "double",
          "type": "number"
        },
        "distanceCycling": {
          "format": "double",
          "type": "number"
        },
        "distanceSwimming": {
          "format": "double",
          "type": "number"
        },
        "distanceWalkingRunning": {
          "format": "double",
          "type": "number"
        },
        "distanceWheelchair": {
          "format": "double",
          "type": "number"
        },
        "exerciseGoal": {
          "format": "double",
          "type": "number"
        },
        "exerciseMinutes": {
          "format": "double",
          "type": "number"
        },
        "flightsClimbed": {
          "format": "double",
          "type": "number"
        },
        "mindfulMinutes": {
          "format": "double",
          "type": "number"
        },
        "standHourGoal": {
          "format": "double",
          "type": "number"
        },
        "standHours": {
          "format": "double",
          "type": "number"
        },
        "stepCount": {
          "format": "double",
          "type": "number"
        },
        "workouts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/AppleHealthKitWorkout"
          }
        }
      }
    },
    "AppleHealthKitLifestyleEntry": {
      "type": "object",
      "properties": {
        "activity": {
          "$ref": "#/definitions/AppleHealthKitActivitySummary"
        },
        "bloodGlucose": {
          "format": "double",
          "type": "number"
        },
        "bloodOxygenLevel": {
          "format": "double",
          "type": "number"
        },
        "bloodPressure": {
          "$ref": "#/definitions/BloodPressure"
        },
        "bodyFatPercentage": {
          "format": "double",
          "type": "number"
        },
        "bodyMassIndex": {
          "format": "double",
          "type": "number"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "hasActivity": {
          "type": "boolean"
        },
        "hasMeasurement": {
          "type": "boolean"
        },
        "hasSleep": {
          "type": "boolean"
        },
        "heartRate": {
          "format": "double",
          "type": "number"
        },
        "height": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "menstrualCycle": {
          "$ref": "#/definitions/AppleHealthKitMenstrualCycleSummary"
        },
        "nightlySleep": {
          "$ref": "#/definitions/AppleHealthKitSleepSummary"
        },
        "respiratoryRate": {
          "format": "double",
          "type": "number"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "symptoms": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "timeZone": {
          "type": "string"
        },
        "waistCircumference": {
          "format": "double",
          "type": "number"
        },
        "weight": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "AppleHealthKitMenstrualCycleSummary": {
      "type": "object",
      "properties": {
        "flowLevel": {
          "type": "string"
        },
        "hadFlow": {
          "type": "boolean"
        },
        "hadSexualActivity": {
          "type": "boolean"
        },
        "hadSpotting": {
          "type": "boolean"
        },
        "isCycleStart": {
          "type": "boolean"
        },
        "usedProtection": {
          "type": "boolean"
        }
      }
    },
    "AppleHealthKitNutritionEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "nutrientSnapshot": {
          "$ref": "#/definitions/NutrientAmountCollection"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "AppleHealthKitSleepStageSummary": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int32",
          "type": "integer"
        },
        "minutes": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "AppleHealthKitSleepSummary": {
      "type": "object",
      "properties": {
        "adjustedDuration": {
          "format": "int64",
          "type": "integer"
        },
        "awake": {
          "$ref": "#/definitions/AppleHealthKitSleepStageSummary"
        },
        "core": {
          "$ref": "#/definitions/AppleHealthKitSleepStageSummary"
        },
        "deep": {
          "$ref": "#/definitions/AppleHealthKitSleepStageSummary"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "endTime": {
          "format": "date-time",
          "type": "string"
        },
        "hasStages": {
          "type": "boolean",
          "readOnly": true
        },
        "preferredSourceId": {
          "type": "string"
        },
        "preferredSourceName": {
          "type": "string"
        },
        "rem": {
          "$ref": "#/definitions/AppleHealthKitSleepStageSummary"
        },
        "startTime": {
          "format": "date-time",
          "type": "string"
        },
        "unspecified": {
          "$ref": "#/definitions/AppleHealthKitSleepStageSummary"
        }
      }
    },
    "AppleHealthKitWorkout": {
      "type": "object",
      "properties": {
        "duration": {
          "format": "double",
          "type": "number"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        },
        "workoutType": {
          "type": "string"
        }
      }
    },
    "AvailabilityTimeSlot": {
      "type": "object",
      "properties": {
        "duration": {
          "description": " The duation of the availability slot.",
          "type": "string",
          "readOnly": true
        },
        "endDate": {
          "format": "date-time",
          "description": " End time of the availability slot in UTC.",
          "type": "string"
        },
        "startDate": {
          "format": "date-time",
          "description": " Start time of the availability slot in UTC.",
          "type": "string"
        }
      }
    },
    "BloodPressure": {
      "type": "object",
      "properties": {
        "diastolic": {
          "format": "double",
          "type": "number"
        },
        "systolic": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "BloodPressureFragment": {
      "required": [
        "systolic",
        "diastolic"
      ],
      "type": "object",
      "properties": {
        "diastolic": {
          "format": "double",
          "type": "number"
        },
        "systolic": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "BookingsPage": {
      "type": "object",
      "required": [
        "label"
      ],
      "properties": {
        "actions": {
          "type": "array",
          "description": " Custom links displayed on this bookings page (e.g. links to cancellation policies or external websites).",
          "items": {
            "$ref": "#/definitions/ConsultantDashboardAction"
          }
        },
        "categories": {
          "type": "array",
          "description": " The list of service categories shown on this bookings page, used to group related services and packages.",
          "items": {
            "$ref": "#/definitions/BookingsPageCategory"
          }
        },
        "clientTagPredicate": {
          "type": "string",
          "description": " Determines how multiple client tags are evaluated for page visibility. Possible values: `any` (client has at least one matching tag — default when null), `all` (client has all specified tags)."
        },
        "clientTags": {
          "type": "array",
          "description": " Client tags used to restrict visibility of this bookings page. Only clients with matching tags can view this page.",
          "items": {
            "type": "string"
          }
        },
        "consultantIds": {
          "type": "array",
          "description": " The list of team member consultant IDs whose services are shown on this bookings page. Null or empty means all team members' services are shown.",
          "items": {
            "type": "string"
          }
        },
        "coverImage": {
          "$ref": "#/definitions/Image"
        },
        "descriptionStyle": {
          "type": "string",
          "description": " Controls how service descriptions are displayed on the bookings page. Possible values: `hidden` (descriptions not shown), `collapsed` (truncated with a \"Read more\" button), `visible` (full descriptions shown)."
        },
        "entityIds": {
          "type": "array",
          "description": " **[Deprecated]** A flat list of service or package IDs shown on this page. Superseded by `categories` for all new pages. When present on legacy pages, the server synthesises `categories` entries from this list on read.",
          "items": {
            "type": "string"
          }
        },
        "familyRecordBookingEnabled": {
          "type": "boolean",
          "description": " When true, clients can book sessions on this page on behalf of family members linked to their account."
        },
        "id": {
          "type": "string",
          "description": " The unique identifier for this bookings page."
        },
        "label": {
          "type": "string",
          "description": " The internal label used to identify this bookings page in the practitioner portal (e.g. \"New Client Bookings Page\"). Required. Maximum 140 characters.",
          "maxLength": 140
        },
        "locationIds": {
          "type": "array",
          "description": " The list of location IDs to which in-person bookings on this page are restricted. Null or empty means all locations are available.",
          "items": {
            "type": "string"
          }
        },
        "notes": {
          "type": "string",
          "description": " A welcome message or description displayed to clients on the bookings page, shown above the list of available services. Null if no welcome message is set.",
          "maxLength": 6000
        },
        "pageType": {
          "type": "string",
          "description": " The layout type of this bookings page. Possible values: `consultant` (single-practitioner page listing one consultant's services), `team` (lists team members first, then their available services), `categories` (lists service categories first, then lets the client select a service)."
        },
        "redirectUri": {
          "type": "string",
          "description": " A URL to redirect clients to after completing a booking through this page. Overrides product-level redirects. Null if no redirect is configured."
        },
        "suppressPractitionerDisplay": {
          "type": "boolean",
          "description": " When true, the practitioner list is hidden in the left navigation bar on the product list step of the bookings page."
        },
        "suppressPractitionerSelection": {
          "type": "boolean",
          "description": " When true, practitioner selection is suppressed on the package details page (when booking is mandatory) and on the session date/time page."
        },
        "title": {
          "type": "string",
          "description": " The title displayed to clients at the top of the bookings page (e.g. \"Book an Appointment\"). Maximum 50 characters. Null if the default title is used.",
          "maxLength": 50
        },
        "useAsDefault": {
          "type": "boolean",
          "description": " When true, this bookings page is used as the default booking experience for clients."
        }
      },
      "additionalProperties": false
    },
    "BookingsPageCategory": {
      "type": "object",
      "properties": {
        "entities": {
          "type": "array",
          "description": " The list of services, packages, or programs grouped under this category and displayed to clients.",
          "items": {
            "$ref": "#/definitions/EntityLink"
          }
        },
        "entity": {
          "$ref": "#/definitions/EntityLink"
        },
        "name": {
          "type": "string",
          "description": " The display name of the category shown to clients on the bookings page (e.g. \"New Clients\", \"Returning Clients\")."
        },
        "notes": {
          "type": "string",
          "description": " An optional description shown below the category name on the bookings page. Maximum 500 characters. Null if no description is set.",
          "maxLength": 500
        }
      },
      "additionalProperties": false
    },
    "BowelMovementEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "color": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "consistency": {
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "hadMovement": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "movementTime": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "satisfied": {
          "type": "boolean"
        },
        "stimuli": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IStimulus"
          }
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "CalendarEventBuffer": {
      "type": "object",
      "properties": {
        "after": {
          "type": "integer",
          "description": " The buffer time in seconds to block after an event. Prevents bookings from starting immediately after the event ends. Must be one of: `300` (5 min) `600` (10 min) `900` (15 min) `1200` (20 min) `1800` (30 min) `2700` (45 min) `3600` (60 min) `4500` (75 min) `5400` (90 min) `7200` (2 hr) `10800` (3 hr). Null for no buffer.",
          "format": "int64"
        },
        "before": {
          "type": "integer",
          "description": " The buffer time in seconds to block before an event. Prevents bookings from starting immediately before the event begins. Must be one of: `300` (5 min) `600` (10 min) `900` (15 min) `1200` (20 min) `1800` (30 min) `2700` (45 min) `3600` (60 min) `4500` (75 min) `5400` (90 min) `7200` (2 hr) `10800` (3 hr). Null for no buffer.",
          "format": "int64"
        }
      },
      "additionalProperties": false
    },
    "ChatAutoResponderSettings": {
      "type": "object",
      "properties": {
        "autoResponder": {
          "type": "string",
          "description": " The message automatically sent to clients who message the practitioner during an active auto-responder period. Maximum 250 characters.",
          "maxLength": 250
        },
        "periods": {
          "type": "array",
          "description": " The list of recurring weekly time periods during which the chat auto-responder is active (e.g. weekday evenings, weekends).",
          "items": {
            "$ref": "#/definitions/NotificationSnoozePeriod"
          }
        }
      },
      "additionalProperties": false
    },
    "ClaimMdAccountSettings": {
      "type": "object",
      "properties": {
        "lastClaimsSyncStartDate": {
          "type": "string",
          "description": " UTC timestamp when the most recent account-wide Claim.MD sync started (claims and ERAs).",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "Client": {
      "type": "object",
      "properties": {
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "emailAddress": {
          "type": "string",
          "description": " The email address associated with this user's Practice Better account."
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the user."
        },
        "profile": {
          "$ref": "#/definitions/Client<ClientProfile>"
        }
      },
      "additionalProperties": false
    },
    "Client<ClientProfile>": {
      "type": "object",
      "properties": {
        "timeZone": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Client<ClientRecord>": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "ClientBloodMeasurements": {
      "required": [
        "entryDate"
      ],
      "type": "object",
      "properties": {
        "alanineTransaminase": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "albumin": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "albuminGlobulinRatio": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "alkalinePhosphatase": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "antithyroglobulinAb": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "aspartateAminoTransferase": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "basophils": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "bilirubin": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "bloodUreaNitrogen": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "bunCreatinineRatio": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "calcium": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "chloride": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "cReactiveProtein": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "creatinine": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "eosinophils": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "estimatedChdRisk": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "freeThyroxine": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "globulin": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "glomerularFiltrationRate": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "glucose": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "glycatedHemoglobin": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "hdlCholesterol": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "hematocrit": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "hemoglobin": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "id": {
          "description": " The unique identifier of the Measurement (only relevant when updating - omit for create).",
          "type": "string"
        },
        "immatureCells": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "iron": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "lactateDehydrogenase": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "ldlCholesterol": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "lymphs": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "magnesium": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "meanCorpuscularHemoglobin": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "meanCorpuscularHemoglobinConcentration": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "meanCorpuscularVolume": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "monocytes": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "neutrophils": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "neutrophilsAbsolute": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "phosphorus": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "platelets": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "potassium": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "redBloodCellCount": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "redBloodCellDistribution": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "reverseTriiodothyronine": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "sodium": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "thyroidPeroxidaseAb": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "thyroidStimulatingHormone": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "thyroxine": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "totalCholesterol": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "totalCholesterolHdlCholesterolRatio": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "totalProtein": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "triiodothyronine": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "tryglycerides": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "uricAcid": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "urinePhLevelDay": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "urinePhLevelEvening": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "urinePhLevelMorning": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "vitaminD3": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "vldlCholesterol": {
          "$ref": "#/definitions/MeasurableDose"
        },
        "whiteBloodCellCount": {
          "$ref": "#/definitions/MeasurableDose"
        }
      }
    },
    "ClientBookingChangesSettings": {
      "type": "object",
      "properties": {
        "periodWindow": {
          "type": "integer",
          "description": " The number of seconds before a session's start time within which clients are prevented from cancelling or rescheduling. Must be one of the following values in seconds: `3600` (1 hr) `7200` (2 hr) `10800` (3 hr) `14400` (4 hr) `18000` (5 hr) `21600` (6 hr) `25200` (7 hr) `28800` (8 hr) `32400` (9 hr) `36000` (10 hr) `39600` (11 hr) `43200` (12 hr) `86400` (1 day) `172800` (2 days) `259200` (3 days) `345600` (4 days) `432000` (5 days) `518400` (6 days) `604800` (7 days). Null if no period window restriction is configured.",
          "format": "int64"
        },
        "policyMessage": {
          "type": "string",
          "description": " The cancellation policy message shown to clients when they attempt to cancel or reschedule within the restricted period. Null if no custom policy message is configured."
        },
        "preventChanges": {
          "type": "boolean",
          "description": " When true, clients are completely prevented from cancelling or rescheduling their own sessions regardless of the period window."
        },
        "usePeriodWindow": {
          "type": "boolean",
          "description": " When true, a period window is configured and clients can only cancel or reschedule outside that window before the session.",
          "readOnly": true
        }
      },
      "additionalProperties": false
    },
    "ClientDietLifestyleProfile": {
      "type": "object",
      "properties": {
        "activitiesForCreativity": {
          "type": "string"
        },
        "activitiesForFun": {
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dietaryRestrictions": {
          "type": "string"
        },
        "drinksAlcohol": {
          "type": "boolean"
        },
        "drinksCoffee": {
          "type": "boolean"
        },
        "exerciseInformation": {
          "type": "string"
        },
        "hasPets": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "mainStressors": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "recreationalDrugs": {
          "type": "string"
        },
        "sleepInformation": {
          "type": "string"
        },
        "smoker": {
          "type": "boolean"
        }
      }
    },
    "ClientDietLifestyleProfileFragment": {
      "type": "object",
      "properties": {
        "activitiesForCreativity": {
          "type": "string"
        },
        "activitiesForFun": {
          "type": "string"
        },
        "dietaryRestrictions": {
          "type": "string"
        },
        "drinksAlcohol": {
          "type": "boolean"
        },
        "drinksCoffee": {
          "type": "boolean"
        },
        "exerciseInformation": {
          "type": "string"
        },
        "hasPets": {
          "type": "boolean"
        },
        "id": {
          "description": " The unique identifier of the Diet and Lifestyle profile (only relevant when updating - omit for create).",
          "type": "string"
        },
        "mainStressors": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "recreationalDrugs": {
          "type": "string"
        },
        "sleepInformation": {
          "type": "string"
        },
        "smoker": {
          "type": "boolean"
        }
      }
    },
    "ClientDrugAllergy": {
      "type": "object",
      "properties": {
        "allergenName": {
          "type": "string"
        },
        "isActive": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "onsetDate": {
          "format": "date-time",
          "type": "string"
        },
        "reactions": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "severity": {
          "type": "string"
        }
      }
    },
    "ClientDrugPrescription": {
      "type": "object",
      "properties": {
        "completedDate": {
          "format": "date-time",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dosageText": {
          "type": "string"
        },
        "drugDescription": {
          "type": "string"
        },
        "duration": {
          "type": "string"
        },
        "isCompleted": {
          "type": "boolean"
        },
        "isDenied": {
          "type": "boolean"
        },
        "isVoided": {
          "type": "boolean"
        },
        "pharmacyName": {
          "type": "string"
        },
        "quantity": {
          "type": "string"
        },
        "quantityUnit": {
          "type": "string"
        },
        "refills": {
          "type": "string"
        },
        "signedDate": {
          "format": "date-time",
          "type": "string"
        },
        "stopDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "ClientHealthProductBaseFragment": {
      "required": [
        "productName",
        "startDate",
        "frequency"
      ],
      "type": "object",
      "properties": {
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "id": {
          "description": " The unique identifier of Medical History Client Health Product (only relevant when updating - omit for create).",
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "productName": {
          "type": "string"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "ClientMeasurements": {
      "type": "object",
      "properties": {
        "abdomenCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "bloodOxygenLevel": {
          "format": "double",
          "type": "number"
        },
        "bloodPressure": {
          "$ref": "#/definitions/BloodPressure"
        },
        "bodyFatPercentage": {
          "format": "double",
          "type": "number"
        },
        "bodyMassIndex": {
          "format": "double",
          "type": "number"
        },
        "calfCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "calfRightCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "chestCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "heartRate": {
          "format": "double",
          "type": "number"
        },
        "heightInInches": {
          "format": "double",
          "type": "number"
        },
        "hipsCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "neckCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "thighCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "thighRightCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "underBustCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "upperArmCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "upperArmRightCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "waistCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "weightInPounds": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "ClientMeasurementsFragment": {
      "required": [
        "entryDate"
      ],
      "type": "object",
      "properties": {
        "abdomenCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "bloodOxygenLevel": {
          "format": "double",
          "type": "number"
        },
        "bloodPressure": {
          "$ref": "#/definitions/BloodPressureFragment"
        },
        "bodyFatPercentage": {
          "format": "double",
          "type": "number"
        },
        "bodyMassIndex": {
          "format": "double",
          "type": "number"
        },
        "calfCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "calfRightCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "chestCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "entryDate": {
          "$ref": "#/definitions/Date",
          "description": " Measurements entry date: `yyyy-mm-dd`"
        },
        "heartRate": {
          "format": "double",
          "type": "number"
        },
        "heightInInches": {
          "format": "double",
          "type": "number"
        },
        "hipsCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "description": " The unique identifier of the Measurement (only relevant when updating - omit for create).",
          "type": "string"
        },
        "neckCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "thighCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "thighRightCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "underBustCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "upperArmCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "upperArmRightCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "waistCircumferenceInInches": {
          "format": "double",
          "type": "number"
        },
        "weightInPounds": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "ClientMedicalHistory": {
      "type": "object",
      "properties": {
        "currentHealthConditions": {
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsuranceCode"
          }
        },
        "drFirstMedicationProducts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DrFirstMedication"
          }
        },
        "drugAllergiesFromExternal": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientDrugAllergy"
          }
        },
        "foodEnvironmentalAllergies": {
          "type": "string"
        },
        "hospitilizations": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "maternalIllnesses": {
          "type": "string"
        },
        "medicationProducts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientMedication"
          }
        },
        "notes": {
          "type": "string"
        },
        "paternalIllnesses": {
          "type": "string"
        },
        "personalIllnesses": {
          "type": "string"
        },
        "prescriptionMedications": {
          "type": "string"
        },
        "prescriptionsFromExternal": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientDrugPrescription"
          }
        },
        "supplementProducts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientSupplement"
          }
        },
        "supplements": {
          "type": "string"
        },
        "vaccinations": {
          "type": "string"
        }
      }
    },
    "ClientMedicalHistoryFragment": {
      "type": "object",
      "properties": {
        "currentHealthConditions": {
          "type": "string"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsuranceCode"
          }
        },
        "foodEnvironmentalAllergies": {
          "type": "string"
        },
        "hospitilizations": {
          "type": "string"
        },
        "id": {
          "description": " The unique identifier of Medical History record (only relevant when updating - omit for create).",
          "type": "string"
        },
        "maternalIllnesses": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "paternalIllnesses": {
          "type": "string"
        },
        "personalIllnesses": {
          "type": "string"
        },
        "prescriptionMedications": {
          "type": "string"
        },
        "supplements": {
          "type": "string"
        },
        "vaccinations": {
          "type": "string"
        }
      }
    },
    "ClientMedication": {
      "type": "object",
      "properties": {
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dosage": {
          "format": "double",
          "type": "number"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "externalCountryCode": {
          "type": "string"
        },
        "externalId": {
          "type": "string"
        },
        "form": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isActive": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "productName": {
          "type": "string"
        },
        "route": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "ClientPackage": {
      "type": "object",
      "properties": {
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "sku": {
          "type": "string"
        }
      }
    },
    "ClientPackageCourseDetailsFragment": {
      "required": [
        "courseId"
      ],
      "type": "object",
      "properties": {
        "courseId": {
          "description": " The unique identifier of the program.",
          "type": "string"
        }
      }
    },
    "ClientPackageInstance": {
      "type": "object",
      "properties": {
        "cancellable": {
          "type": "boolean",
          "readOnly": true
        },
        "cancelledSessionHistory": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "actualDuration": {
                "format": "int64",
                "type": "integer"
              },
              "buffer": {
                "description": "<a href=\"/schemas/CalendarEventBuffer\">CalendarEventBuffer</a>",
                "type": "object",
                "properties": {}
              },
              "cancellable": {
                "type": "boolean"
              },
              "cancelled": {
                "type": "boolean"
              },
              "confirmationStatus": {
                "type": "string"
              },
              "consultant": {
                "description": "<a href=\"/schemas/Stub<Consultant>\">Stub<Consultant></a>",
                "type": "object",
                "properties": {}
              },
              "dateConfirmed": {
                "format": "date-time",
                "type": "string"
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "dateModified": {
                "format": "date-time",
                "type": "string"
              },
              "duration": {
                "format": "int64",
                "type": "integer"
              },
              "endDate": {
                "format": "date-time",
                "type": "string"
              },
              "fee": {
                "description": "<a href=\"/schemas/Money\">Money</a>",
                "type": "object",
                "properties": {}
              },
              "hasRecording": {
                "type": "boolean"
              },
              "id": {
                "type": "string"
              },
              "insurancePoliciesChecked": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/HealthInsurancePolicy\">HealthInsurancePolicy</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "internalNotesHistory": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/SessionBookingNotes\">SessionBookingNotes</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "isRecurring": {
                "type": "boolean"
              },
              "isSubscription": {
                "type": "boolean"
              },
              "location": {
                "description": "<a href=\"/schemas/OfficeLocation\">OfficeLocation</a>",
                "type": "object",
                "properties": {}
              },
              "notes": {
                "type": "string"
              },
              "notesHistory": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/SessionBookingNotes\">SessionBookingNotes</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "paymentStatus": {
                "type": "string"
              },
              "service": {
                "description": "<a href=\"/schemas/ProfessionalService\">ProfessionalService</a>",
                "type": "object",
                "properties": {}
              },
              "serviceType": {
                "type": "string"
              },
              "sessionDate": {
                "format": "date-time",
                "type": "string"
              },
              "sessionNotes": {
                "description": "<a href=\"/schemas/ClientSessionNotes\">ClientSessionNotes</a>",
                "type": "object",
                "properties": {}
              },
              "timeZone": {
                "type": "string"
              },
              "upcoming": {
                "type": "boolean"
              }
            }
          }
        },
        "clientRecord": {
          "type": "object",
          "properties": {
            "client": {
              "description": "<a href=\"/schemas/Client\">Client</a>",
              "type": "object",
              "properties": {}
            },
            "dateActivated": {
              "format": "date-time",
              "type": "string"
            },
            "dateCreated": {
              "format": "date-time",
              "type": "string"
            },
            "dateModified": {
              "format": "date-time",
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "invitationSent": {
              "type": "boolean"
            },
            "isActive": {
              "type": "boolean"
            },
            "isChildRecord": {
              "type": "boolean"
            },
            "lastActivityDate": {
              "format": "date-time",
              "type": "string"
            },
            "parentRecord": {
              "description": "<a href=\"/schemas/ClientRecord\">ClientRecord</a>",
              "type": "object",
              "properties": {}
            },
            "profile": {
              "description": "<a href=\"/schemas/ClientRecordProfile\">ClientRecordProfile</a>",
              "type": "object",
              "properties": {}
            },
            "relatedTags": {
              "type": "array",
              "items": {
                "description": "<a href=\"/schemas/TagDescriptor\">TagDescriptor</a>",
                "type": "object",
                "properties": {}
              }
            },
            "status": {
              "type": "string"
            }
          }
        },
        "confirmationStatus": {
          "type": "string"
        },
        "confirmed": {
          "type": "boolean",
          "readOnly": true
        },
        "consultant": {
          "type": "object",
          "properties": {
            "company": {
              "description": "<a href=\"/schemas/Company\">Company</a>",
              "type": "object",
              "properties": {}
            },
            "dateCreated": {
              "format": "date-time",
              "type": "string"
            },
            "dateModified": {
              "format": "date-time",
              "type": "string"
            },
            "emailAddress": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "isOwner": {
              "type": "boolean"
            },
            "isPractitioner": {
              "type": "boolean"
            },
            "profile": {
              "description": "<a href=\"/schemas/Stub<ConsultantProfile>\">Stub<ConsultantProfile></a>",
              "type": "object",
              "properties": {}
            }
          }
        },
        "courseEnrollments": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "availableModules": {
                "format": "int32",
                "type": "integer"
              },
              "clientRecord": {
                "description": "<a href=\"/schemas/ClientRecord\">ClientRecord</a>",
                "type": "object",
                "properties": {}
              },
              "completedModules": {
                "format": "int32",
                "type": "integer"
              },
              "dateArchived": {
                "format": "date-time",
                "type": "string"
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "dateEnrolled": {
                "format": "date-time",
                "type": "string"
              },
              "dateModified": {
                "format": "date-time",
                "type": "string"
              },
              "dispatchedNotificationModules": {
                "format": "int32",
                "type": "integer"
              },
              "id": {
                "type": "string"
              },
              "modules": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/CourseEnrollmentModule\">CourseEnrollmentModule</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "paymentStatus": {
                "type": "string"
              },
              "startDate": {
                "format": "date-time",
                "type": "string"
              }
            }
          }
        },
        "courses": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "course": {
                "description": "<a href=\"/schemas/Course\">Course</a>",
                "type": "object",
                "properties": {}
              }
            }
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "expired": {
          "type": "boolean"
        },
        "expiryDate": {
          "format": "date-time",
          "type": "string"
        },
        "fee": {
          "$ref": "#/definitions/Money"
        },
        "formRequests": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "clientRecord": {
                "description": "<a href=\"/schemas/Client<ClientRecord>\">Client<ClientRecord></a>",
                "type": "object",
                "properties": {}
              },
              "completed": {
                "type": "boolean"
              },
              "completedForm": {
                "description": "<a href=\"/schemas/CompletedForm\">CompletedForm</a>",
                "type": "object",
                "properties": {}
              },
              "consultant": {
                "description": "<a href=\"/schemas/Stub<Consultant>\">Stub<Consultant></a>",
                "type": "object",
                "properties": {}
              },
              "dateCompleted": {
                "format": "date-time",
                "type": "string"
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "form": {
                "description": "<a href=\"/schemas/Form\">Form</a>",
                "type": "object",
                "properties": {}
              },
              "hasAnswers": {
                "type": "boolean"
              },
              "id": {
                "type": "string"
              },
              "isRecurring": {
                "type": "boolean"
              },
              "lastImportDate": {
                "format": "date-time",
                "type": "string"
              },
              "review": {
                "description": "<a href=\"/schemas/FormRequestReview\">FormRequestReview</a>",
                "type": "object",
                "properties": {}
              },
              "selfSubmit": {
                "type": "boolean"
              },
              "started": {
                "type": "boolean"
              }
            }
          }
        },
        "hasSessionHistory": {
          "type": "boolean",
          "readOnly": true
        },
        "id": {
          "type": "string"
        },
        "isOngoing": {
          "type": "boolean",
          "readOnly": true
        },
        "isSubscription": {
          "type": "boolean"
        },
        "maximumSessionsPerMonth": {
          "format": "int32",
          "type": "integer"
        },
        "maximumSessionsPerWeek": {
          "format": "int32",
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "package": {
          "type": "object",
          "properties": {
            "consultant": {
              "description": "<a href=\"/schemas/Stub<Consultant>\">Stub<Consultant></a>",
              "type": "object",
              "properties": {}
            },
            "dateCreated": {
              "format": "date-time",
              "type": "string"
            },
            "dateModified": {
              "format": "date-time",
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "name": {
              "type": "string"
            },
            "sku": {
              "type": "string"
            }
          }
        },
        "paymentStatus": {
          "type": "string"
        },
        "services": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "isFirstBooking": {
                "type": "boolean"
              },
              "isFirstBookingMandatory": {
                "type": "boolean"
              },
              "requestCount": {
                "format": "int32",
                "type": "integer"
              },
              "service": {
                "description": "<a href=\"/schemas/ProfessionalService\">ProfessionalService</a>",
                "type": "object",
                "properties": {}
              },
              "sessionCount": {
                "format": "int32",
                "type": "integer"
              },
              "sessionLimit": {
                "format": "int32",
                "type": "integer"
              },
              "teamBookingSettings": {
                "description": "<a href=\"/schemas/ClientPackageTeamBookingSettings\">ClientPackageTeamBookingSettings</a>",
                "type": "object",
                "properties": {}
              },
              "upcomingSessionCount": {
                "format": "int32",
                "type": "integer"
              }
            }
          }
        },
        "sessionHistory": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "actualDuration": {
                "format": "int64",
                "type": "integer"
              },
              "buffer": {
                "description": "<a href=\"/schemas/CalendarEventBuffer\">CalendarEventBuffer</a>",
                "type": "object",
                "properties": {}
              },
              "cancellable": {
                "type": "boolean"
              },
              "cancelled": {
                "type": "boolean"
              },
              "confirmationStatus": {
                "type": "string"
              },
              "consultant": {
                "description": "<a href=\"/schemas/Stub<Consultant>\">Stub<Consultant></a>",
                "type": "object",
                "properties": {}
              },
              "dateConfirmed": {
                "format": "date-time",
                "type": "string"
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "dateModified": {
                "format": "date-time",
                "type": "string"
              },
              "duration": {
                "format": "int64",
                "type": "integer"
              },
              "endDate": {
                "format": "date-time",
                "type": "string"
              },
              "fee": {
                "description": "<a href=\"/schemas/Money\">Money</a>",
                "type": "object",
                "properties": {}
              },
              "hasRecording": {
                "type": "boolean"
              },
              "id": {
                "type": "string"
              },
              "insurancePoliciesChecked": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/HealthInsurancePolicy\">HealthInsurancePolicy</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "internalNotesHistory": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/SessionBookingNotes\">SessionBookingNotes</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "isRecurring": {
                "type": "boolean"
              },
              "isSubscription": {
                "type": "boolean"
              },
              "location": {
                "description": "<a href=\"/schemas/OfficeLocation\">OfficeLocation</a>",
                "type": "object",
                "properties": {}
              },
              "notes": {
                "type": "string"
              },
              "notesHistory": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/SessionBookingNotes\">SessionBookingNotes</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "paymentStatus": {
                "type": "string"
              },
              "service": {
                "description": "<a href=\"/schemas/ProfessionalService\">ProfessionalService</a>",
                "type": "object",
                "properties": {}
              },
              "serviceType": {
                "type": "string"
              },
              "sessionDate": {
                "format": "date-time",
                "type": "string"
              },
              "sessionNotes": {
                "description": "<a href=\"/schemas/ClientSessionNotes\">ClientSessionNotes</a>",
                "type": "object",
                "properties": {}
              },
              "timeZone": {
                "type": "string"
              },
              "upcoming": {
                "type": "boolean"
              }
            }
          }
        },
        "sessionLimit": {
          "format": "int32",
          "type": "integer"
        },
        "sessionRequestHistory": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "cancellable": {
                "type": "boolean"
              },
              "clientRecord": {
                "description": "<a href=\"/schemas/ClientRecord\">ClientRecord</a>",
                "type": "object",
                "properties": {}
              },
              "confirmationStatus": {
                "type": "string"
              },
              "consultant": {
                "description": "<a href=\"/schemas/Stub<Consultant>\">Stub<Consultant></a>",
                "type": "object",
                "properties": {}
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "dateModified": {
                "format": "date-time",
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "location": {
                "description": "<a href=\"/schemas/OfficeLocation\">OfficeLocation</a>",
                "type": "object",
                "properties": {}
              },
              "notes": {
                "type": "string"
              },
              "packageDetails": {
                "description": "<a href=\"/schemas/ClientPackageInstanceSessionDetails\">ClientPackageInstanceSessionDetails</a>",
                "type": "object",
                "properties": {}
              },
              "paymentStatus": {
                "type": "string"
              },
              "service": {
                "description": "<a href=\"/schemas/ProfessionalService\">ProfessionalService</a>",
                "type": "object",
                "properties": {}
              },
              "serviceType": {
                "type": "string"
              },
              "sessionDate": {
                "format": "date-time",
                "type": "string"
              },
              "timeZone": {
                "type": "string"
              }
            }
          }
        },
        "sessionTotal": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ClientPackageInstanceFragment": {
      "required": [
        "packageId",
        "name",
        "clientRecordId"
      ],
      "type": "object",
      "properties": {
        "asConsultantId": {
          "description": " The ID of the consultant assigned to the client's package.",
          "type": "string"
        },
        "clientRecordId": {
          "description": " The unique identifier of the client record.",
          "type": "string"
        },
        "courses": {
          "description": " A list of programs that should be included in the client's package.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientPackageCourseDetailsFragment"
          }
        },
        "expiryDate": {
          "format": "date-time",
          "description": " The client will not be able to book sessions for this package after this date.",
          "type": "string"
        },
        "fee": {
          "$ref": "#/definitions/Money"
        },
        "maximumSessionsPerMonth": {
          "format": "int32",
          "description": " The maximum number of sessions the client can book from the package per month.",
          "type": "integer"
        },
        "maximumSessionsPerWeek": {
          "format": "int32",
          "description": " The maximum number of sessions the client can book from the package per week.",
          "type": "integer"
        },
        "name": {
          "description": " The name of the package.",
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "notificationOptions": {
          "$ref": "#/definitions/ClientRecordNotificationOptions"
        },
        "notify": {
          "description": " If false, will not send a confirmation notification to the client.",
          "type": "boolean"
        },
        "packageId": {
          "description": " The unique identifier of the base package.",
          "type": "string"
        },
        "services": {
          "description": " A list of services that should be included in the client's package.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientPackageServiceDetailsFragment"
          }
        }
      }
    },
    "ClientPackageServiceDetailsFragment": {
      "required": [
        "serviceId"
      ],
      "type": "object",
      "properties": {
        "isFirstBooking": {
          "type": "boolean"
        },
        "isFirstBookingMandatory": {
          "type": "boolean"
        },
        "serviceId": {
          "description": " The unique identifier of the service.",
          "type": "string"
        },
        "sessionLimit": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ClientRecord": {
      "type": "object",
      "properties": {
        "client": {
          "$ref": "#/definitions/Client"
        },
        "dateActivated": {
          "type": "string",
          "format": "date-time"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "dateModified": {
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "type": "string"
        },
        "invitationSent": {
          "type": "boolean"
        },
        "isActive": {
          "type": "boolean"
        },
        "isChildRecord": {
          "type": "boolean"
        },
        "lastActivityDate": {
          "type": "string",
          "format": "date-time"
        },
        "parentRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "profile": {
          "$ref": "#/definitions/ClientRecordProfile"
        },
        "relatedTags": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/definitions/TagDescriptor"
          }
        },
        "status": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ClientRecordCreateFragment": {
      "required": [
        "profile"
      ],
      "type": "object",
      "properties": {
        "documentsFolder": {
          "description": " Create a documents folder for the client.",
          "type": "boolean"
        },
        "foodJournalOptions": {
          "$ref": "#/definitions/FoodMoodJournalCreateRequest",
          "description": " If CreateFoodMoodJournal is set, applies these options to food-related journal entries."
        },
        "foodMoodJournal": {
          "description": " Give the client access to the Food &amp; Mood Journal.",
          "type": "boolean"
        },
        "formIds": {
          "description": " A list of form IDs for the client to complete. An email will be sent to the client with instructions to complete the forms.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "isActive": {
          "description": " True if the client should have access to Client Portal. [Learn More](https://help.practicebetter.io/hc/en-us/articles/232319108-Deactivating-and-reactivating-clients)",
          "type": "boolean"
        },
        "lifestyleJournal": {
          "description": " Give the client access to the Lifestyle Journal.",
          "type": "boolean"
        },
        "lifestyleJournalOptions": {
          "$ref": "#/definitions/LifestyleJournalCreateRequest",
          "description": " If CreateLifestyleJournal is set, applies these options to lifestyle-related journal entries."
        },
        "parentRecordId": {
          "description": " If provided, the client record will created as a sub-record/child of the record with this ID. [Learn More](https://help.practicebetter.io/hc/en-us/articles/115007154147-Working-with-Family-Records)",
          "type": "string"
        },
        "profile": {
          "$ref": "#/definitions/ClientRecordProfile"
        },
        "sendInvitation": {
          "description": " Send an email invitation to the client to join Practice Better.",
          "type": "boolean"
        },
        "sendNutriQ": {
          "description": " Flag to send the NTA NAQ form to the client (via [Nutritional Therapy Association Integration]))",
          "type": "boolean"
        },
        "sendNutriQv2": {
          "description": " Flag to send the NTA NAQ V2 form to the client (via [Nutritional Therapy Association Integration]))",
          "type": "boolean"
        },
        "sendWellnessQuestionnaire": {
          "description": " Flag to send the Wellness Questionnaire form to the client (via [Whole Practice Integration](https://help.practicebetter.io/hc/en-us/articles/360056998212))",
          "type": "boolean"
        },
        "tagActions": {
          "$ref": "#/definitions/TagUpdateRequestFragment",
          "description": " A list of tag actions to apply to the client record."
        }
      }
    },
    "ClientRecordHealthInsuranceProfile": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": " The unique identifier of the Health Insurance Profile (only relevant when updating - omit for create)."
        },
        "policies": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsurancePolicy"
          }
        }
      },
      "additionalProperties": false
    },
    "ClientRecordNotificationOptions": {
      "type": "object",
      "properties": {
        "ignoreClientInviteRestriction": {
          "description": " True if a notification should be sent to the client even if they have not been invited to access the Client Portal.",
          "type": "boolean"
        }
      }
    },
    "ClientRecordProfile": {
      "type": "object",
      "required": [
        "emailAddress",
        "firstName",
        "lastName"
      ],
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "dateOfBirth": {
          "type": "string",
          "description": " This is a legacy field. Use `dayOfBirth` instead.",
          "format": "date-time"
        },
        "dayOfBirth": {
          "$ref": "#/definitions/Date"
        },
        "emailAddress": {
          "type": "string"
        },
        "emergencyContacts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/EmergencyContact"
          }
        },
        "firstName": {
          "type": "string",
          "maxLength": 50
        },
        "gender": {
          "type": "string",
          "description": " This is a legacy field. Use `genderIdentity` instead."
        },
        "genderIdentity": {
          "type": "string",
          "description": " E.g. `Man/Boy` `Woman/Girl` `Non-binary` `Transgender` `Agender` `Fluid` `Queer` `Prefer not to say`."
        },
        "healthcareProviders": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthcareProvider"
          }
        },
        "healthInsuranceProfile": {
          "$ref": "#/definitions/ClientRecordHealthInsuranceProfile"
        },
        "homePhone": {
          "type": "string",
          "maxLength": 20
        },
        "lastName": {
          "type": "string",
          "maxLength": 50
        },
        "maritalStatus": {
          "type": "string",
          "description": " One of `single` `commonlaw` `married` `partnered` `separated` `divorced` `widowed`."
        },
        "middleName": {
          "type": "string",
          "maxLength": 50
        },
        "mobilePhone": {
          "type": "string",
          "description": " Use international format if outside Canada/US. [Learn more](https://help.practicebetter.io/hc/en-us/articles/360001694272)",
          "maxLength": 20
        },
        "notes": {
          "type": "string",
          "maxLength": 10000
        },
        "occupation": {
          "type": "string",
          "maxLength": 100
        },
        "patientAccountNumber": {
          "type": "string",
          "maxLength": 20
        },
        "preferredName": {
          "type": "string",
          "maxLength": 50
        },
        "pronouns": {
          "type": "string",
          "description": " E.g. He/Him"
        },
        "referredBy": {
          "type": "string",
          "maxLength": 100
        },
        "secondaryContacts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ContactPerson"
          }
        },
        "timeZone": {
          "type": "string",
          "description": " The client's timezone. The value should be the name of the timezone e.g `Pacific Standard Time`. For a list of valid\r\nvalues see [List Timezones](/operations/TimeZone_List)"
        },
        "title": {
          "type": "string",
          "maxLength": 10
        },
        "workHoursPerWeek": {
          "type": "number",
          "format": "double"
        },
        "workPhone": {
          "type": "string",
          "maxLength": 20
        }
      },
      "additionalProperties": false
    },
    "ClientRecordSelectionFragment": {
      "type": "object",
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "tagIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ClientRecordUpdateFragment": {
      "type": "object",
      "properties": {
        "isActive": {
          "description": " Determines whether or not client can have access to Practice Better portal. [Learn More](https://help.practicebetter.io/hc/en-us/articles/232319108-Deactivating-and-reactivating-clients)",
          "type": "boolean"
        },
        "pinned": {
          "description": " Whether or not the client record is pinned in the Practice Better platform. [Learn More](https://help.practicebetter.io/hc/en-us/articles/360038000192-Customizing-Your-Dashboard#h_1e31814f-0e95-4510-84d3-a974e4b5b1b6)",
          "type": "boolean"
        },
        "profile": {
          "$ref": "#/definitions/ClientRecordProfile"
        }
      }
    },
    "ClientSession": {
      "type": "object",
      "properties": {
        "actualDuration": {
          "format": "int64",
          "type": "integer"
        },
        "buffer": {
          "$ref": "#/definitions/CalendarEventBuffer"
        },
        "cancellable": {
          "type": "boolean"
        },
        "cancelled": {
          "type": "boolean",
          "readOnly": true
        },
        "clientConfirmationStatus": {
          "type": "string"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "confirmationStatus": {
          "type": "string"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateConfirmed": {
          "format": "date-time",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "fee": {
          "$ref": "#/definitions/Money"
        },
        "hasRecording": {
          "type": "boolean",
          "readOnly": true
        },
        "id": {
          "type": "string"
        },
        "insurancePoliciesChecked": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsurancePolicy"
          }
        },
        "internalNotesHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SessionBookingNotes"
          }
        },
        "isRecurring": {
          "type": "boolean",
          "readOnly": true
        },
        "isSubscription": {
          "type": "boolean"
        },
        "location": {
          "$ref": "#/definitions/OfficeLocation"
        },
        "notes": {
          "type": "string"
        },
        "notesHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SessionBookingNotes"
          }
        },
        "paymentStatus": {
          "type": "string"
        },
        "service": {
          "$ref": "#/definitions/ProfessionalService"
        },
        "serviceType": {
          "type": "string"
        },
        "sessionDate": {
          "format": "date-time",
          "type": "string"
        },
        "sessionNotes": {
          "$ref": "#/definitions/ClientSessionNotes"
        },
        "timeZone": {
          "type": "string"
        },
        "upcoming": {
          "type": "boolean",
          "readOnly": true
        }
      }
    },
    "ClientSessionBase": {
      "type": "object",
      "properties": {
        "actualDuration": {
          "format": "int64",
          "type": "integer"
        },
        "buffer": {
          "$ref": "#/definitions/CalendarEventBuffer"
        },
        "cancellable": {
          "type": "boolean"
        },
        "cancelled": {
          "type": "boolean"
        },
        "confirmationStatus": {
          "type": "string"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateConfirmed": {
          "format": "date-time",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "fee": {
          "$ref": "#/definitions/Money"
        },
        "hasRecording": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "insurancePoliciesChecked": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsurancePolicy"
          }
        },
        "internalNotesHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SessionBookingNotes"
          }
        },
        "isRecurring": {
          "type": "boolean"
        },
        "isSubscription": {
          "type": "boolean"
        },
        "location": {
          "$ref": "#/definitions/OfficeLocation"
        },
        "notes": {
          "type": "string"
        },
        "notesHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SessionBookingNotes"
          }
        },
        "paymentStatus": {
          "type": "string"
        },
        "service": {
          "$ref": "#/definitions/ProfessionalService"
        },
        "serviceType": {
          "type": "string"
        },
        "sessionDate": {
          "format": "date-time",
          "type": "string"
        },
        "sessionNotes": {
          "$ref": "#/definitions/ClientSessionNotes"
        },
        "timeZone": {
          "type": "string"
        },
        "upcoming": {
          "type": "boolean"
        }
      }
    },
    "ClientSessionCancellationFragment": {
      "type": "object",
      "properties": {
        "cancelPendingBookings": {
          "description": " If true, cancels upcoming sessions and session requests that have not been accepted.",
          "type": "boolean"
        },
        "cancelRecurringAutomations": {
          "description": " If true, cancels any active payment plans associated with the client's package.",
          "type": "boolean"
        },
        "notes": {
          "description": " An optional note to include in the cancellation notification.",
          "type": "string"
        },
        "notify": {
          "description": " If true, a notification will be sent to this client about the cancellation.",
          "type": "boolean"
        }
      }
    },
    "ClientSessionCreateFragment": {
      "required": [
        "clientRecordId",
        "sessionDate",
        "serviceType",
        "serviceId",
        "duration"
      ],
      "type": "object",
      "properties": {
        "asConsultantId": {
          "description": " The ID of the consultant assigned to the client's session.",
          "type": "string"
        },
        "buffer": {
          "$ref": "#/definitions/CalendarEventBuffer"
        },
        "clientRecordId": {
          "description": " The unique identifier of the client record.",
          "type": "string"
        },
        "duration": {
          "format": "int64",
          "description": " The duration of the session in minutes",
          "type": "integer"
        },
        "fee": {
          "$ref": "#/definitions/Money"
        },
        "ignoreConflict": {
          "description": " If true, will book session despite potential conflicts in practitioner's calendar.",
          "type": "boolean"
        },
        "location": {
          "$ref": "#/definitions/OfficeLocation"
        },
        "markConfirmed": {
          "description": " Mark session as client-confirmed, avoids seeing \"Confirm\" button in email.",
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "notificationOptions": {
          "$ref": "#/definitions/ClientRecordNotificationOptions"
        },
        "notify": {
          "description": " If false, will not send a confirmation notification to the client.",
          "type": "boolean"
        },
        "serviceId": {
          "description": " The unique identifier of the service.",
          "type": "string"
        },
        "serviceType": {
          "description": " How the session will be conducted. One of `face` (in-person), `phone`, `virtual` (telehealth).\r\nIf type is `virtual` you must also set the launchApplication property under telehealthSettings.",
          "type": "string"
        },
        "sessionDate": {
          "format": "date-time",
          "description": " The date and time of the session.",
          "type": "string"
        },
        "telehealthSettings": {
          "$ref": "#/definitions/SessionTelehealthSettings"
        },
        "timeZone": {
          "description": " The timezone of the booking time. The value should be the name of the timezone e.g `Pacific Standard Time`. For a list of valid\r\nvalues see [List Timezones](/operations/TimeZone_List)",
          "type": "string"
        }
      }
    },
    "ClientSessionDateFragment": {
      "required": [
        "sessionDate"
      ],
      "type": "object",
      "properties": {
        "duration": {
          "format": "int64",
          "description": " The duration of the session in minutes.",
          "type": "integer"
        },
        "ignoreConflict": {
          "description": " If true, will reschedule the session despite potential conflicts in practitioner's calendar.",
          "type": "boolean"
        },
        "sessionDate": {
          "format": "date-time",
          "description": " The date and time of the session.",
          "type": "string"
        }
      }
    },
    "ClientSessionNotes": {
      "type": "object",
      "properties": {
        "artifacts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MediaItem"
          }
        },
        "booking": {
          "$ref": "#/definitions/ClientSessionBase"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "completionStatus": {
          "type": "string"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "content": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IClientSessionNotesContent"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "datePrepared": {
          "format": "date-time",
          "type": "string"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsuranceCode"
          }
        },
        "diagnosisCodesPublishStatus": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isArchived": {
          "type": "boolean",
          "readOnly": true
        },
        "labRequests": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LabRequestBase"
          }
        },
        "name": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "procedureCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProfessionalServiceProcedureCode"
          }
        },
        "procedureCodesPublishStatus": {
          "type": "string"
        },
        "protocols": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Protocol"
          }
        },
        "publishStatus": {
          "type": "string"
        },
        "reminders": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Reminder"
          }
        },
        "revision": {
          "format": "int64",
          "type": "integer"
        },
        "sessionDate": {
          "format": "date-time",
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "ClientSupplement": {
      "type": "object",
      "properties": {
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "conditionsTreated": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthCondition"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dose": {
          "$ref": "#/definitions/IDose"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isActive": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "productName": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "sourceSupplement": {
          "$ref": "#/definitions/SourceSupplement"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        },
        "timeOfDay": {
          "$ref": "#/definitions/TimeOfDayFrequency"
        }
      }
    },
    "CloudShare": {
      "type": "object",
      "properties": {
        "dateSynchronized": {
          "type": "string",
          "description": " UTC timestamp when this cloud storage integration was last successfully synchronized. Null if synchronization has not yet occurred.",
          "format": "date-time"
        },
        "provider": {
          "type": "string",
          "description": " The cloud storage provider identifier, e.g. `google.drive`, `dropbox`."
        },
        "staled": {
          "type": "boolean",
          "description": " When true, the connection to this cloud storage provider has become stale (e.g. access was revoked or credentials expired) and requires re-authorization. When false, the connection is active. Null if the integration does not expose connection status."
        }
      },
      "additionalProperties": false
    },
    "Cms1500Form": {
      "type": "object",
      "properties": {
        "acceptAssignment": {
          "type": "boolean"
        },
        "amountDue": {
          "$ref": "#/definitions/Money"
        },
        "amountPaid": {
          "$ref": "#/definitions/Money"
        },
        "carrier": {
          "$ref": "#/definitions/HealthInsurancePayer"
        },
        "claim": {
          "$ref": "#/definitions/Cms1500FormClaim"
        },
        "claimAmountPaid": {
          "$ref": "#/definitions/Money"
        },
        "clientInformation": {
          "$ref": "#/definitions/Cms1500FormClientInformation"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "currency": {
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateIssued": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsuranceCode"
          }
        },
        "icdCodeType": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "originalReferenceNumber": {
          "type": "string"
        },
        "priorAuthorizationNumber": {
          "type": "string"
        },
        "providerInformation": {
          "$ref": "#/definitions/Cms1500FormProviderInformation"
        },
        "resubmissionCode": {
          "type": "string"
        },
        "serviceDetails": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormServiceDetails"
          }
        },
        "submissionHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormSubmissionStatusHistoryItem"
          }
        },
        "submissionStatus": {
          "type": "string"
        },
        "subTotal": {
          "$ref": "#/definitions/Money"
        },
        "totalAmountPaid": {
          "$ref": "#/definitions/Money"
        },
        "version": {
          "type": "string"
        }
      }
    },
    "Cms1500FormClaim": {
      "type": "object",
      "properties": {
        "claimId": {
          "type": "string"
        },
        "clientResponsibility": {
          "$ref": "#/definitions/Cms1500FormClaimClientResponsibility"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "eras": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormEraInfo"
          }
        },
        "firstDateOfService": {
          "$ref": "#/definitions/Date"
        },
        "isPaymentOverridden": {
          "type": "boolean"
        },
        "messages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormClaimMessage"
          }
        },
        "patientId": {
          "type": "string"
        },
        "payerId": {
          "type": "string"
        },
        "previousMessages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormClaimMessage"
          }
        },
        "senderIcn": {
          "type": "string"
        },
        "senderId": {
          "type": "string"
        },
        "senderName": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "totalCharge": {
          "$ref": "#/definitions/Money"
        },
        "totalPaid": {
          "$ref": "#/definitions/Money"
        }
      }
    },
    "Cms1500FormClaimChargeAdjustment": {
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "codeDescription": {
          "type": "string"
        },
        "group": {
          "type": "string"
        },
        "groupDescription": {
          "type": "string"
        }
      }
    },
    "Cms1500FormClaimChargeGroupedAdjustment": {
      "type": "object",
      "properties": {
        "adjustments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormClaimChargeAdjustment"
          }
        },
        "groupDescription": {
          "type": "string"
        }
      }
    },
    "Cms1500FormClaimClientResponsibility": {
      "type": "object",
      "properties": {
        "clientResponsibleCharge": {
          "$ref": "#/definitions/Money"
        },
        "isEstimate": {
          "type": "boolean"
        }
      }
    },
    "Cms1500FormClaimMessage": {
      "type": "object",
      "properties": {
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "fields": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "messageId": {
          "type": "string"
        },
        "responseId": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "Cms1500FormClientInformation": {
      "type": "object",
      "properties": {
        "additionalClaimInformation": {
          "type": "string"
        },
        "address": {
          "$ref": "#/definitions/Address"
        },
        "autoAccidentState": {
          "type": "string"
        },
        "clientAccountNumber": {
          "type": "string"
        },
        "conditionClaimCodes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "conditionRelatedAutoAccident": {
          "type": "boolean"
        },
        "conditionRelatedEmployment": {
          "type": "boolean"
        },
        "conditionRelatedOtherAccident": {
          "type": "boolean"
        },
        "dateOfIllness": {
          "$ref": "#/definitions/Date"
        },
        "dateOfIllnessQualifier": {
          "type": "string"
        },
        "datesHospitalized": {
          "$ref": "#/definitions/DateRange"
        },
        "datesUnableToWork": {
          "$ref": "#/definitions/DateRange"
        },
        "dayOfBirth": {
          "$ref": "#/definitions/Date"
        },
        "firstName": {
          "type": "string"
        },
        "gender": {
          "type": "string"
        },
        "genderIdentity": {
          "type": "string"
        },
        "hasOtherPolicy": {
          "type": "boolean"
        },
        "insuredSignatureOnFile": {
          "type": "boolean"
        },
        "lastName": {
          "type": "string"
        },
        "otherClaimId": {
          "type": "string"
        },
        "otherClaimIdQualifier": {
          "type": "string"
        },
        "otherDate": {
          "$ref": "#/definitions/Date"
        },
        "otherDateQualifier": {
          "type": "string"
        },
        "otherPolicy": {
          "$ref": "#/definitions/HealthInsurancePolicy"
        },
        "outsideLabCharges": {
          "$ref": "#/definitions/Money"
        },
        "outsideLabUsed": {
          "type": "boolean"
        },
        "patientSignatureOnFile": {
          "type": "boolean"
        },
        "phoneNumber": {
          "type": "string"
        },
        "policy": {
          "$ref": "#/definitions/HealthInsurancePolicy"
        },
        "referringProvider": {
          "$ref": "#/definitions/HealthcareProvider"
        },
        "sexAssignedAtBirth": {
          "type": "string"
        }
      }
    },
    "Cms1500FormEraAdjustment": {
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "code": {
          "type": "string"
        },
        "codeDescription": {
          "type": "string"
        },
        "insuranceNumber": {
          "type": "string"
        },
        "referenceNumber": {
          "type": "string"
        }
      }
    },
    "Cms1500FormEraCharge": {
      "type": "object",
      "properties": {
        "adjustments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormClaimChargeAdjustment"
          }
        },
        "charge": {
          "$ref": "#/definitions/Money"
        },
        "fromDateOfService": {
          "$ref": "#/definitions/Date"
        },
        "groupedAdjustments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormClaimChargeGroupedAdjustment"
          }
        },
        "paid": {
          "$ref": "#/definitions/Money"
        },
        "patientResponsibleCharge": {
          "$ref": "#/definitions/Money"
        },
        "procedureCode": {
          "type": "string"
        },
        "units": {
          "type": "string"
        }
      }
    },
    "Cms1500FormEraInfo": {
      "type": "object",
      "properties": {
        "adjustments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormEraAdjustment"
          }
        },
        "charges": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormEraCharge"
          }
        },
        "checkNumber": {
          "type": "string"
        },
        "eraId": {
          "type": "string"
        },
        "paidAmount": {
          "$ref": "#/definitions/Money"
        },
        "paidAmountForClaim": {
          "$ref": "#/definitions/Money"
        },
        "paidDate": {
          "$ref": "#/definitions/Date"
        },
        "payerId": {
          "type": "string"
        },
        "payerName": {
          "type": "string"
        },
        "providerName": {
          "type": "string"
        },
        "providerNpi": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "Cms1500FormProviderInformation": {
      "type": "object",
      "properties": {
        "billingProviderAddress": {
          "$ref": "#/definitions/Address"
        },
        "billingProviderName": {
          "type": "string"
        },
        "billingProviderOtherId": {
          "type": "string"
        },
        "billingProviderOtherIdQualifier": {
          "type": "string"
        },
        "billingProviderPhoneNumber": {
          "type": "string"
        },
        "npiNumber": {
          "type": "string"
        },
        "organizationNpiNumber": {
          "type": "string"
        },
        "serviceFacilityLocation": {
          "$ref": "#/definitions/OfficeLocation"
        },
        "serviceFacilityNpiNumber": {
          "type": "string"
        },
        "serviceFacilityOtherId": {
          "type": "string"
        },
        "serviceFacilityOtherIdQualifier": {
          "type": "string"
        },
        "taxNumber": {
          "type": "string"
        },
        "taxNumberType": {
          "type": "string"
        },
        "taxNumberUpdated": {
          "type": "boolean"
        }
      }
    },
    "Cms1500FormServiceDetails": {
      "type": "object",
      "properties": {
        "actualDuration": {
          "format": "int64",
          "type": "integer"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "epsdtCode": {
          "type": "string"
        },
        "familyPlan": {
          "type": "boolean"
        },
        "isEmergency": {
          "type": "boolean"
        },
        "placeOfService": {
          "$ref": "#/definitions/CmsPlaceOfServiceCode"
        },
        "procedureCode": {
          "$ref": "#/definitions/HealthInsuranceCode"
        },
        "procedureCodeModifiers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "renderingProviderId": {
          "type": "string"
        },
        "renderingProviderIdQualifier": {
          "type": "string"
        },
        "renderingProviderNpiNumber": {
          "type": "string"
        },
        "sessionDate": {
          "$ref": "#/definitions/Date"
        },
        "sessionId": {
          "type": "string"
        },
        "unitCost": {
          "$ref": "#/definitions/Money"
        },
        "units": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "Cms1500FormSubmissionStatusHistoryItem": {
      "required": [
        "status"
      ],
      "type": "object",
      "properties": {
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "CmsPlaceOfServiceCode": {
      "type": "object",
      "required": [
        "code",
        "description"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": " The two-digit CMS place of service code as defined by the Centers for Medicare and Medicaid Services (e.g. \"02\" for telehealth, \"11\" for office).",
          "maxLength": 10
        },
        "description": {
          "type": "string",
          "description": " The human-readable description of the CMS place of service code (e.g. \"Telehealth Provided Other than in Patient's Home\"). Maximum 200 characters.",
          "maxLength": 200
        }
      },
      "additionalProperties": false
    },
    "Collection<ClientBloodMeasurements>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientBloodMeasurements"
          }
        }
      }
    },
    "Collection<ClientMeasurements>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientMeasurements"
          }
        }
      }
    },
    "Collection<ClientPackage>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientPackage"
          }
        }
      }
    },
    "Collection<ClientPackageInstance>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientPackageInstance"
          }
        }
      }
    },
    "Collection<ClientRecord>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientRecord"
          }
        }
      }
    },
    "Collection<ClientSession>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientSession"
          }
        }
      }
    },
    "Collection<ClientSessionNotes>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ClientSessionNotes"
          }
        }
      }
    },
    "Collection<Cms1500Form>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500Form"
          }
        }
      }
    },
    "Collection<Consultant>": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Consultant"
          }
        }
      },
      "additionalProperties": false
    },
    "Collection<ConsultantInvoice>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoice"
          }
        }
      }
    },
    "Collection<Course>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Course"
          }
        }
      }
    },
    "Collection<CourseEnrollment>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CourseEnrollment"
          }
        }
      }
    },
    "Collection<Form>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Form"
          }
        }
      }
    },
    "Collection<FormRequest>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormRequest"
          }
        }
      }
    },
    "Collection<LabRequestBase>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LabRequestBase"
          }
        }
      }
    },
    "Collection<ProfessionalService>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ProfessionalService"
          }
        }
      }
    },
    "Collection<Protocol>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Protocol"
          }
        }
      }
    },
    "Collection<Reminder>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Reminder"
          }
        }
      }
    },
    "Collection<Superbill>": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int64",
          "type": "integer"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Superbill"
          }
        }
      }
    },
    "Collection<Tag>": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tag"
          }
        }
      },
      "additionalProperties": false
    },
    "Collection<WebhookDelivery>": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookDelivery"
          }
        }
      },
      "additionalProperties": false
    },
    "Collection<WebhookSubscription>": {
      "type": "object",
      "properties": {
        "count": {
          "type": "integer",
          "format": "int64"
        },
        "hasMore": {
          "type": "boolean"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookSubscription"
          }
        }
      },
      "additionalProperties": false
    },
    "Company": {
      "type": "object",
      "properties": {
        "businessNumber": {
          "type": "string",
          "description": " The practice's business registration or tax number (e.g. GST number, QST number, VAT number, EIN). This number appears on Practice Better billing statements. Null if not set."
        },
        "businessNumberType": {
          "type": "string",
          "description": " The type of business number stored in `BusinessNumber` (e.g. `GST`, `HST`, `EIN`). Null if no business number is set."
        },
        "dateCreated": {
          "type": "string",
          "description": " UTC timestamp when this practice was created in Practice Better.",
          "format": "date-time"
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the practice company."
        },
        "managedBillingEnabled": {
          "type": "boolean",
          "description": " When true, the Managed Billing feature is enabled for this practice, meaning the billing mode is set to `managed`. The practice owner can centrally configure billing settings that apply across all team members. This is a computed, read-only field. See [Setting Up Managed Billing for Your Team](https://help.practicebetter.io/hc/en-us/articles/50826847092507-Setting-Up-Managed-Billing-for-Your-Team)."
        },
        "name": {
          "type": "string",
          "description": " The official business or practice name, as entered in the Company Profile. This name appears on invoices, forms, and other client-facing documents."
        },
        "theme": {
          "$ref": "#/definitions/Theme"
        }
      },
      "additionalProperties": false
    },
    "CompanyManagedBillingSettings": {
      "type": "object",
      "properties": {
        "billingMode": {
          "type": "string",
          "description": " The team billing mode. Possible values are `managed` (billing is centralized through the team owner's account) `unmanaged` (each team member bills clients directly)."
        },
        "invoiceHeader": {
          "type": "string",
          "description": " The company name or practice header displayed on invoices generated under the team billing account."
        },
        "notificationMode": {
          "type": "string",
          "description": " The notification recipient for invoice confirmation emails in managed billing mode. The default recipient is the team member assigned to the invoice. Possible values are `assigned` (only the assigned practitioner is notified) `assignedowner` (both the assigned practitioner and owner are notified) `owner` (only the team owner is notified)."
        }
      },
      "additionalProperties": false
    },
    "CompletedForm": {
      "type": "object",
      "properties": {
        "aggregates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormAggregateAnswer"
          }
        },
        "answers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IAnswer"
          }
        },
        "attachments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MediaItem"
          }
        },
        "consent": {
          "$ref": "#/definitions/FormConsent"
        },
        "consents": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormConsent"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "form": {
          "$ref": "#/definitions/Form"
        },
        "id": {
          "type": "string"
        },
        "quizResults": {
          "$ref": "#/definitions/QuizResults"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "Consultant": {
      "type": "object",
      "properties": {
        "activationStatus": {
          "type": "string",
          "description": " The activation state of this consultant account. Possible values are `activated` `deactivated` `archived` `unactivated`. `activated` — account is fully active. `deactivated` — subscription payments are past due. `archived` — deactivated and excluded from team plan seat limits; cannot be self-restored. `unactivated` — account is pending purge and no longer accessible."
        },
        "company": {
          "$ref": "#/definitions/Company"
        },
        "dateCreated": {
          "type": "string",
          "description": " UTC timestamp when this consultant account was created.",
          "format": "date-time"
        },
        "dateModified": {
          "type": "string",
          "description": " UTC timestamp when this consultant record was last modified. Null if the record has never been updated since creation.",
          "format": "date-time"
        },
        "emailAddress": {
          "type": "string",
          "description": " The email address associated with this user's Practice Better account."
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the user."
        },
        "isAssistant": {
          "type": "boolean",
          "description": " When true, this consultant is an administrative user (assistant). Admin users can create and manage resources on behalf of a practitioner but cannot own client records directly.",
          "readOnly": true
        },
        "isOwner": {
          "type": "boolean",
          "description": " When true, this consultant is the team owner. A practice has exactly one owner, who is the primary account holder and receives all billing statements."
        },
        "isPractitioner": {
          "type": "boolean",
          "description": " When true, this consultant is a practitioner. Practitioners (e.g. a Nutritionist or Health Coach) can create and manage their own resources, including bookings, forms, session notes, and protocols. When false, this is an administrative user."
        },
        "profile": {
          "$ref": "#/definitions/ConsultantProfile"
        }
      },
      "additionalProperties": false
    },
    "ConsultantAvailabilitySettings": {
      "type": "object",
      "properties": {
        "afterHoursBookingsDisabled": {
          "type": "boolean",
          "description": " When true, no default booking slots are generated on days when the practitioner has no configured availability. Null if not set."
        },
        "currentOutOfOfficePeriod": {
          "$ref": "#/definitions/OutOfOfficePeriod"
        },
        "externalAllDayEventsIncluded": {
          "type": "boolean",
          "description": " When true, all-day events on the connected external calendar block availability for the entire day. Null if not set."
        },
        "externalAvailabilityEnabled": {
          "type": "boolean",
          "description": " When true, the consultant's connected external calendar blocks availability — busy time on that calendar marks those slots as unbookable. Null if not set."
        },
        "externalEventBuffer": {
          "$ref": "#/definitions/CalendarEventBuffer"
        },
        "isOutOfOffice": {
          "type": "boolean",
          "description": " True if the consultant is currently out of office (i.e. `currentOutOfOfficePeriod` is non-null). False otherwise.",
          "readOnly": true
        },
        "lookBusyDistribution": {
          "type": "string",
          "description": " The distribution strategy used when hiding slots for the look-busy feature. Possible values: `early` (present earliest slots first), `later` (present latest slots first), `even` (evenly distributed across the day). Null if not configured."
        },
        "lookBusyFloor": {
          "type": "integer",
          "description": " The minimum number of available slots that must always remain bookable, regardless of the look-busy percentage. Must be between `1` and `10`. Null if not configured.",
          "format": "int32"
        },
        "lookBusyPercentage": {
          "type": "integer",
          "description": " The percentage of available booking slots that are artificially marked as unavailable to create the appearance of a busy calendar. Must be a multiple of 10 between `10` and `90`. Null if the look-busy feature is not enabled.",
          "format": "int32"
        },
        "magneticBookingSettings": {
          "$ref": "#/definitions/MagneticBookingSettings"
        },
        "outOfOfficeSettings": {
          "$ref": "#/definitions/OutOfOfficeSettings"
        },
        "rollingTimeSlotsEnabled": {
          "type": "boolean",
          "description": " When true, booking slots are generated with overlapping windows (e.g. 6:00–6:30, 6:10–6:40) rather than consecutive non-overlapping blocks (e.g. 6:00–6:30, 6:30–7:00). Null if not set."
        },
        "sessionLimitSettings": {
          "$ref": "#/definitions/SessionLimitSettings"
        },
        "sessionRequestBuffer": {
          "type": "integer",
          "description": " The minimum number of hours required between the current time and the start of a bookable time slot. Prevents clients from booking within this window. Null if not configured.",
          "format": "int32"
        },
        "sessionRequestThreshold": {
          "type": "integer",
          "description": " The maximum number of days into the future that clients can book a session. Null if no advance booking limit is configured.",
          "format": "int32"
        },
        "timeSlotRounding": {
          "type": "integer",
          "description": " The time slot interval (in minutes) to which available booking times are rounded. Must be one of: `5` `10` `15` `20` `30` `60`. Null if not configured.",
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "ConsultantAvailabilitySettingsUpdateFragment": {
      "type": "object",
      "description": "Request body for updating the consultant's availability settings (booking buffer, advance window, out-of-office, look-busy, etc.).",
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose availability settings to update. Omit to update the authenticated consultant's own availability settings. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "availabilitySettings": {
          "$ref": "#/definitions/ConsultantAvailabilitySettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantBasicProfileUpdateFragment": {
      "type": "object",
      "description": "Request body for updating basic consultant profile fields: name, title, occupation, designations, bio, and default currency.",
      "required": [
        "firstName",
        "lastName",
        "professionalDesignations",
        "timeZone"
      ],
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose profile to update. Omit to update the authenticated consultant's own profile. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "bio": {
          "type": "string",
          "description": " The consultant's full biography displayed on their public profile page. Supports HTML. Maximum 10000 characters. Null to clear.",
          "maxLength": 10000
        },
        "defaultCurrency": {
          "type": "string",
          "description": " The ISO 4217 currency code set as this consultant's default for invoicing and billing (e.g. `usd` `cad` `gbp`). Required."
        },
        "firstName": {
          "type": "string",
          "description": " The consultant's first name as set on their practitioner profile.",
          "maxLength": 50
        },
        "lastName": {
          "type": "string",
          "description": " The consultant's last name as set on their practitioner profile.",
          "maxLength": 50
        },
        "occupation": {
          "type": "string",
          "description": " The consultant's professional role or occupation as displayed on their public profile page (e.g. `Registered Dietitian` `Health Coach` `Nutritional Therapist`). Corresponds to the Professional Title field in their practitioner profile. Null to clear.",
          "maxLength": 100
        },
        "professionalDesignations": {
          "type": "array",
          "description": " The consultant's registered professional designations, each with the accreditation name, governing body, and registration details. At least one designation is required. See [Adding Accreditations](https://help.practicebetter.io/hc/en-us/articles/234583748-Adding-Accreditations).",
          "items": {
            "$ref": "#/definitions/ProfessionalDesignation"
          }
        },
        "shortBio": {
          "type": "string",
          "description": " A short biographical summary displayed on the consultant's public booking page. Maximum 200 characters. Null to clear.",
          "maxLength": 200
        },
        "timeZone": {
          "type": "string",
          "description": " The consultant's time zone using Windows Standard time zone names (e.g. `Eastern Standard Time`). Required."
        },
        "title": {
          "type": "string",
          "description": " The consultant's professional title or honorific. Possible values: `Mr` `Mr.` `Ms` `Ms.` `Mrs` `Mrs.` `Miss` `Dr` `Dr.` `Prof` `Prof.`. Null to clear. See [Setting Up Your Practitioner and Company Profiles](https://help.practicebetter.io/hc/en-us/articles/42206527444123-Setting-Up-Your-Practitioner-and-Company-Profiles).",
          "maxLength": 10
        }
      },
      "additionalProperties": false
    },
    "ConsultantBookingSettings": {
      "type": "object",
      "properties": {
        "bookingPageRedirectUri": {
          "type": "string",
          "description": " A URL to redirect clients to after they complete a booking. Overrides any product-level redirect. Null if no redirect is configured.",
          "maxLength": 300
        },
        "bookingsPages": {
          "type": "array",
          "description": " The list of bookings pages configured for this practitioner, each defining the services, layout, and audience restrictions for a client-facing booking experience.",
          "items": {
            "$ref": "#/definitions/BookingsPage"
          }
        },
        "calendarSlotDuration": {
          "type": "integer",
          "description": " The duration in minutes of each time slot shown in the calendar grid. Possible values: `10` `15` `30`. Null uses the default (15 minutes).",
          "format": "int32"
        },
        "calendarViewConsultantId": {
          "type": "string",
          "description": " For assistant accounts, the ID of the practitioner whose calendar is shown by default when opening the calendar view. Null means the assistant's default view is used."
        },
        "cancellationMessage": {
          "type": "string",
          "description": " The cancellation policy text displayed to clients when they attempt to cancel or reschedule. Maximum 500 characters.",
          "maxLength": 500
        },
        "cancellationMessageEnabled": {
          "type": "boolean",
          "description": " When true, a cancellation policy message is shown to clients when they attempt to cancel or reschedule a session."
        },
        "cancellationPeriod": {
          "type": "integer",
          "description": " The number of seconds before a session's start time within which clients are prevented from cancelling or rescheduling. For example, 86400 means cancellations are blocked within 24 hours of the session.",
          "format": "int64"
        },
        "clientBookingChangesSettings": {
          "$ref": "#/definitions/ClientBookingChangesSettings"
        },
        "consultantSessionRemindersEnabled": {
          "type": "boolean"
        },
        "eventNameStyle": {
          "type": "string",
          "description": " Controls how session events are labelled on the calendar. Possible values: `eventnameattendeeinitial` (e.g. Initial Consultation (M. Smith) — default), `eventnameattendeename` (e.g. Initial Consultation (Mary Smith)), `eventname` (e.g. Initial Consultation), `attendeenameeventname` (e.g. Mary Smith (Initial Consultation)), `attendeeinitialeventname` (e.g. M. Smith (Initial Consultation)), `attendeename` (e.g. Mary Smith), `attendeeinitial` (e.g. M. Smith). Null uses the default."
        },
        "familyRecordBookingEnabled": {
          "type": "boolean",
          "description": " When true, clients can book sessions on behalf of family members linked to their account."
        },
        "hideInternalEventDetails": {
          "type": "boolean",
          "description": " When true, internal (non-session) calendar events created by the practitioner are shown without details to team members viewing the shared schedule."
        },
        "hideReferralAndReasonForBooking": {
          "type": "boolean",
          "description": " When true, the referral source and reason-for-booking fields are hidden from the client booking flow."
        },
        "invitationMethods": {
          "type": "array",
          "description": " The set of calendar invitation methods enabled for this practitioner. Possible values: `internal` (Practice Better in-app invite) `google` (Google Calendar invite).",
          "uniqueItems": true,
          "items": {
            "type": "string"
          }
        },
        "jumpToWeekOnDaySelected": {
          "type": "boolean",
          "description": " When true, selecting a date on the mini calendar view automatically jumps to the week view for that date."
        },
        "noShowFeeSettings": {
          "$ref": "#/definitions/NoShowFeeSettings"
        },
        "oneClickBookingsEnabled": {
          "type": "boolean",
          "description": " When true, clicking on a date in the calendar view opens a prompt to create a new session for that date."
        },
        "onlineSessionPhoneRequired": {
          "type": "boolean",
          "description": " When true, clients are required to provide a phone number when booking an online (phone or video) session."
        },
        "reminderCalendarColor": {
          "type": "integer",
          "description": " The color used for reminder events on the calendar, represented as an integer ARGB value. Null uses the default color.",
          "format": "int32"
        },
        "sessionReminderDeliveryStrategy": {
          "type": "string"
        },
        "sessionReminderPeriod": {
          "type": "integer",
          "format": "int32"
        },
        "sessionReminderSettings": {
          "$ref": "#/definitions/ReminderSettings"
        },
        "uninvitedClientSessionConfirmation": {
          "type": "boolean",
          "description": " When true, confirmation notifications are enabled for clients who have not been invited to access the Client Portal."
        },
        "webCalendarView": {
          "type": "string",
          "description": " The default calendar layout shown in the practitioner portal. Possible values are `listMonth` (agenda) `agendaDay` (day) `month` (month) `agendaDayTeam` (team 1 day) `agendaWeekTeam` (team 3 day). Null uses the default week view."
        },
        "weekCalendarEndTime": {
          "type": "string",
          "description": " The latest time shown in the week calendar view. Events after this time are hidden unless scrolled to.",
          "format": "date-span"
        },
        "weekCalendarStartDay": {
          "type": "string",
          "description": " The day of the week on which the calendar week view starts. Possible values are `sunday` `monday` `tuesday` `wednesday` `thursday` `friday` `saturday`. Null uses the default."
        },
        "weekCalendarStartTime": {
          "type": "string",
          "description": " The earliest time shown in the week calendar view. Events before this time are hidden unless scrolled to.",
          "format": "date-span"
        }
      },
      "additionalProperties": false
    },
    "ConsultantBookingSettingsUpdateFragment": {
      "type": "object",
      "description": "Request body for updating the consultant's booking and calendar settings (cancellation policy, reminders, calendar view, etc.).",
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose booking settings to update. Omit to update the authenticated consultant's own booking settings. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "bookingSettings": {
          "$ref": "#/definitions/ConsultantBookingSettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantClientRecordSettings": {
      "type": "object",
      "properties": {
        "autoReviewedJournalEntryTypes": {
          "type": "array",
          "description": " The list of journal entry types that are automatically marked as reviewed when submitted by clients. Possible values: `applehealthkitnutritionentry` `applehealthkitlifestyleentry` `cronometerdiaryfoodentry` `cronometerdiarymetricentry` `fitbitentry` `garminentry` `ouraringentry`.",
          "items": {
            "type": "string"
          }
        },
        "autoSelectJournals": {
          "type": "boolean",
          "description": " When true, journal tracking is automatically selected and enabled for new clients."
        },
        "dashboardSettings": {
          "$ref": "#/definitions/ConsultantDashboardSettings"
        },
        "disableBarcodeScanner": {
          "type": "boolean",
          "description": " When true, the barcode scanner is disabled in the client mobile app for food logging."
        },
        "disableNutrientClaims": {
          "type": "boolean",
          "description": " When true, nutrient claims and health labels are hidden from the food database shown to clients."
        },
        "disableWelcomeVideo": {
          "type": "boolean",
          "description": " When true, the welcome video is not shown to clients when they first access their client portal."
        },
        "enableJournalAnalysis": {
          "type": "boolean",
          "description": " When true, clients can review their own journal entries."
        },
        "enableOwnerFiltering": {
          "type": "boolean",
          "description": " When true, resource lists default to filtering by the current practitioner. When false, all authorized resources are displayed."
        },
        "enableProfileChangeRequests": {
          "type": "boolean",
          "description": " When true, clients can submit profile change requests that the practitioner can review and approve or reject."
        },
        "folderNameStyle": {
          "type": "string",
          "description": " Controls how client folder names are formatted. Possible values: `lastinitial` (e.g. Smith, M. Docs — default), `lastfirst` (e.g. Smith, Mary Docs), `firstlast` (e.g. Mary Smith Docs)."
        },
        "foodJournalOptions": {
          "$ref": "#/definitions/FoodMoodJournalCreateRequest"
        },
        "imperialSettings": {
          "$ref": "#/definitions/ImperialMeasurementSettings"
        },
        "lifestyleJournalOptions": {
          "$ref": "#/definitions/LifestyleJournalCreateRequest"
        },
        "measurementSystem": {
          "type": "string",
          "description": " The unit system used for body measurements in client journals and records. Possible values are `metric` `imperial`."
        },
        "nameStyle": {
          "type": "string",
          "description": " Controls how client names are formatted in the client records list. Possible values are `lastinitial` `lastfirst` `firstlast` `firstlastinitial` `first` `anonymous`."
        },
        "singleInitialAvatars": {
          "type": "boolean",
          "description": " When true, client avatars display a single initial instead of the full initials abbreviation."
        },
        "welcomeVideoId": {
          "type": "string",
          "description": " The ID of the welcome video shown to clients when they first access their client portal. Maximum 50 characters. Null if no custom video is configured.",
          "maxLength": 50
        },
        "welcomeVideoType": {
          "type": "string",
          "description": " The hosting platform of the welcome video. Possible values are `youtube` `vimeo`."
        }
      },
      "additionalProperties": false
    },
    "ConsultantDashboard": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "dateCreated": {
          "type": "string",
          "description": " UTC timestamp when this dashboard was created.",
          "format": "date-time"
        },
        "dateModified": {
          "type": "string",
          "description": " UTC timestamp when this dashboard was last modified. Null if it has never been modified after creation.",
          "format": "date-time"
        },
        "id": {
          "type": "string",
          "description": " The unique identifier for this dashboard."
        },
        "name": {
          "type": "string",
          "description": " The name of this dashboard displayed in the navigation tabs. Maximum 30 characters.",
          "maxLength": 30
        },
        "panels": {
          "type": "array",
          "description": " The list of panels displayed on this dashboard, each showing a different type of practice metric or activity summary.",
          "items": {
            "$ref": "#/definitions/ConsultantDashboardPanel"
          }
        }
      },
      "additionalProperties": false
    },
    "ConsultantDashboardAction": {
      "type": "object",
      "properties": {
        "action": {
          "type": "string",
          "description": " The type of action this item performs when clicked (e.g. `navigate` `open_chat`)."
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "id": {
          "type": "string",
          "description": " The unique identifier for this dashboard action."
        },
        "name": {
          "type": "string",
          "description": " The display name shown for this action in the dashboard."
        },
        "target": {
          "$ref": "#/definitions/EntityLink"
        }
      },
      "additionalProperties": false
    },
    "ConsultantDashboardPanel": {
      "type": "object",
      "properties": {
        "panelType": {
          "type": "string",
          "description": " The type of metric or content displayed by this panel (e.g. `sessions:upcoming` `clients:new` `invoices:outstanding`)."
        },
        "properties": {
          "type": "object",
          "description": " Additional configuration properties for this panel, keyed by property name. The available properties depend on the PanelType.",
          "additionalProperties": {}
        }
      },
      "additionalProperties": false
    },
    "ConsultantDashboardSettings": {
      "type": "object",
      "properties": {
        "actions": {
          "type": "array",
          "description": " The quick action items pinned to the practitioner's home dashboard for rapid access to common tasks.",
          "items": {
            "$ref": "#/definitions/ConsultantDashboardAction"
          }
        },
        "dashboards": {
          "type": "array",
          "description": " The custom dashboards configured by the practitioner, each containing a named set of panels displaying practice metrics and activity.",
          "items": {
            "$ref": "#/definitions/ConsultantDashboard"
          }
        },
        "subscriptionUsageMetric": {
          "type": "string",
          "description": " The subscription usage metric displayed on the dashboard to help the practitioner track their plan limits (e.g. `storage` `ai_credits`)."
        }
      },
      "additionalProperties": false
    },
    "ConsultantFormSettings": {
      "type": "object",
      "properties": {
        "legalName": {
          "type": "string",
          "description": " An alternative legal name used on signed forms and documents in place of the practitioner's profile name. Maximum 100 characters.",
          "maxLength": 100
        },
        "signature": {
          "$ref": "#/definitions/Image"
        },
        "signatureOrigin": {
          "$ref": "#/definitions/VirtualAddress"
        }
      },
      "additionalProperties": false
    },
    "ConsultantHealthInsuranceSettings": {
      "type": "object",
      "properties": {
        "billingCountry": {
          "type": "string",
          "description": " The ISO 3166-1 alpha-2 country code used for insurance billing. Controls which billing forms and code sets are available (e.g. CMS-1500 for `US`). Possible values are `US` `CA`."
        },
        "cms1500AcceptAssignment": {
          "type": "boolean",
          "description": " When true, the CMS-1500 claim form indicates that the practitioner accepts assignment, meaning they agree to accept the insurance payer's approved payment amount as full payment."
        },
        "cmsServiceFacilityLocationAddress": {
          "$ref": "#/definitions/Address"
        },
        "cmsServiceFacilityLocationName": {
          "type": "string",
          "description": " The name of the service facility location recorded on CMS-1500 claims when the service location differs from the billing provider address."
        },
        "cmsServiceFacilityNpiNumber": {
          "type": "string",
          "description": " The NPI number of the service facility location recorded on CMS-1500 claims."
        },
        "cmsServiceFacilityOtherId": {
          "type": "string",
          "description": " The other ID value for the service facility on CMS-1500 claims, used in conjunction with `cmsServiceFacilityOtherIdQualifier`."
        },
        "cmsServiceFacilityOtherIdQualifier": {
          "type": "string",
          "description": " The qualifier code indicating the type of the other ID recorded for the service facility on CMS-1500 claims (e.g. \"1D\" for Medicaid)."
        },
        "defaultClaimColumns": {
          "type": "array",
          "description": " The set of column identifiers shown by default in the insurance claims list view.",
          "items": {
            "type": "string"
          }
        },
        "npiNumber": {
          "type": "string",
          "description": " The practitioner's individual National Provider Identifier (NPI) number used on insurance claims."
        },
        "phonePlaceOfServiceCode": {
          "$ref": "#/definitions/CmsPlaceOfServiceCode"
        },
        "sendSuperbillsAsAttachments": {
          "type": "boolean",
          "description": " When true, superbills are sent to clients as email attachments. When false, a secure download link is provided instead."
        },
        "setBalanceToClientResponsibilityForDeniedClaim": {
          "type": "boolean",
          "description": " When true, the client's outstanding balance is automatically set to the client responsibility amount when an insurance claim is marked as denied."
        },
        "superbillCompanyHeader": {
          "type": "string",
          "description": " The practice name and address block printed in the header of superbills. Maximum 500 characters.",
          "maxLength": 500
        },
        "superbillTitle": {
          "type": "string",
          "description": " The title displayed at the top of generated superbills (e.g. \"Superbill\" or \"Receipt for Insurance Reimbursement\"). Maximum 50 characters.",
          "maxLength": 50
        },
        "taxonomyCode": {
          "type": "string",
          "description": " The practitioner's healthcare provider taxonomy code that classifies their specialty on insurance claims."
        },
        "telehealthPlaceOfServiceCode": {
          "$ref": "#/definitions/CmsPlaceOfServiceCode"
        },
        "useIcd10Codes": {
          "type": "boolean",
          "description": " When true, ICD-10 diagnosis codes are used on insurance claims and superbills."
        },
        "useIcd9Codes": {
          "type": "boolean",
          "description": " When true, ICD-9 diagnosis codes are used on insurance claims and superbills instead of ICD-10."
        }
      },
      "additionalProperties": false
    },
    "ConsultantInvoice": {
      "type": "object",
      "properties": {
        "amountDue": {
          "$ref": "#/definitions/Money"
        },
        "amountPaid": {
          "$ref": "#/definitions/Money"
        },
        "amountPaidOrWrittenOff": {
          "$ref": "#/definitions/Money"
        },
        "amountPayable": {
          "$ref": "#/definitions/Money"
        },
        "amountPendingPayment": {
          "$ref": "#/definitions/Money"
        },
        "amountRefunded": {
          "$ref": "#/definitions/Money"
        },
        "amountWrittenOff": {
          "$ref": "#/definitions/Money"
        },
        "billedTo": {
          "type": "string"
        },
        "canProcessPayment": {
          "type": "boolean",
          "readOnly": true
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "companyHeader": {
          "type": "string"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "currency": {
          "type": "string",
          "readOnly": true
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "delayedPaymentHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoiceDelayedPayment"
          }
        },
        "description": {
          "type": "string"
        },
        "discount": {
          "$ref": "#/definitions/Money"
        },
        "discountAmount": {
          "$ref": "#/definitions/Money"
        },
        "discountDescription": {
          "type": "string"
        },
        "discountPercent": {
          "format": "double",
          "type": "number"
        },
        "hasManagedBilling": {
          "type": "boolean",
          "readOnly": true
        },
        "hasRecentFailedDelayedPayment": {
          "type": "boolean",
          "readOnly": true
        },
        "id": {
          "type": "string"
        },
        "includeSignature": {
          "type": "boolean"
        },
        "invoiceDate": {
          "format": "date-time",
          "type": "string"
        },
        "invoiceFooter": {
          "type": "string"
        },
        "invoiceNumber": {
          "type": "string"
        },
        "lineItems": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoiceLineItem"
          }
        },
        "managedBillingSettings": {
          "$ref": "#/definitions/ManagedBillingSettings"
        },
        "minimumPayment": {
          "$ref": "#/definitions/Money"
        },
        "paid": {
          "type": "boolean"
        },
        "paymentHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoicePayment"
          }
        },
        "paymentOptions": {
          "$ref": "#/definitions/InvoicePaymentOptions"
        },
        "paymentStatus": {
          "type": "string"
        },
        "publishStatus": {
          "type": "string"
        },
        "receiptNumber": {
          "type": "string"
        },
        "refundable": {
          "type": "boolean",
          "readOnly": true
        },
        "revision": {
          "format": "int32",
          "type": "integer"
        },
        "subTotal": {
          "$ref": "#/definitions/Money"
        },
        "subTotalBeforeDiscount": {
          "$ref": "#/definitions/Money"
        },
        "tax": {
          "$ref": "#/definitions/Money"
        },
        "taxAmount": {
          "$ref": "#/definitions/Money"
        },
        "taxDescription": {
          "type": "string"
        },
        "taxPercent": {
          "format": "double",
          "type": "number"
        },
        "total": {
          "$ref": "#/definitions/Money"
        },
        "writeOffHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoiceWriteOff"
          }
        }
      }
    },
    "ConsultantInvoiceDelayedPayment": {
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "errorMessage": {
          "type": "string"
        },
        "isDelayedPayment": {
          "type": "boolean",
          "readOnly": true
        },
        "notes": {
          "type": "string"
        },
        "paymentMethodInfo": {
          "$ref": "#/definitions/PaymentMethod"
        },
        "paymentType": {
          "type": "string"
        },
        "processingDate": {
          "format": "date-time",
          "type": "string"
        },
        "settlementDate": {
          "format": "date-time",
          "type": "string"
        },
        "succeeded": {
          "type": "boolean"
        }
      }
    },
    "ConsultantInvoiceLineItem": {
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "date": {
          "format": "date-time",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "discount": {
          "$ref": "#/definitions/Money"
        },
        "discountAmount": {
          "$ref": "#/definitions/Money"
        },
        "discountDescription": {
          "type": "string"
        },
        "discountPercent": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "quantity": {
          "format": "double",
          "type": "number"
        },
        "subTotal": {
          "$ref": "#/definitions/Money"
        },
        "tax": {
          "$ref": "#/definitions/Money"
        },
        "taxDescription": {
          "type": "string"
        },
        "taxPercent": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "ConsultantInvoiceLineItemTaxSummary": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "subtotal": {
          "$ref": "#/definitions/Money"
        },
        "tax": {
          "$ref": "#/definitions/Money"
        }
      }
    },
    "ConsultantInvoicePayment": {
      "required": [
        "paymentType",
        "paymentDate",
        "amount"
      ],
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "amountRefunded": {
          "$ref": "#/definitions/Money"
        },
        "cardType": {
          "type": "string"
        },
        "fee": {
          "$ref": "#/definitions/Money"
        },
        "isCardPresent": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "paymentDate": {
          "format": "date-time",
          "type": "string"
        },
        "paymentMethodInfo": {
          "$ref": "#/definitions/PaymentMethod"
        },
        "paymentType": {
          "type": "string"
        },
        "refunded": {
          "type": "boolean",
          "readOnly": true
        },
        "refunds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoicePaymentRefund"
          }
        },
        "square": {
          "type": "boolean",
          "readOnly": true
        },
        "stripe": {
          "type": "boolean",
          "readOnly": true
        }
      }
    },
    "ConsultantInvoicePaymentRefund": {
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "refundType": {
          "type": "string"
        }
      }
    },
    "ConsultantInvoiceSettings": {
      "type": "object",
      "properties": {
        "acceptPayments": {
          "type": "boolean",
          "description": " When true, online payment processing is enabled and clients can pay invoices using a secure payment link."
        },
        "companyHeader": {
          "type": "string",
          "description": " The practice name, address, and contact details displayed in the header of generated invoices. Maximum 500 characters.",
          "maxLength": 500
        },
        "defaultCurrency": {
          "type": "string",
          "description": " The default currency used for invoices and payments (ISO 4217 currency code, e.g. \"usd\", \"cad\", \"gbp\")."
        },
        "defaultTaxDescription": {
          "type": "string",
          "description": " The label for the default tax applied to invoices (e.g. \"GST\", \"HST\", \"Sales Tax\"). Maximum 50 characters.",
          "maxLength": 50
        },
        "defaultTaxPercent": {
          "type": "number",
          "description": " The default tax rate applied to invoice line items as a percentage (e.g. 13.0 for 13%). Null if no default tax is configured.",
          "format": "double"
        },
        "disableCardDeletion": {
          "type": "boolean",
          "description": " When true, clients cannot delete a saved credit card if it is their only payment method on file."
        },
        "includeSignature": {
          "type": "boolean",
          "description": " When true, the practitioner's digital signature is included on generated invoices."
        },
        "invoiceFooter": {
          "type": "string",
          "description": " Custom text displayed in the footer of generated invoices, such as payment instructions or terms and conditions. Maximum 500 characters.",
          "maxLength": 500
        },
        "managedBillingSettings": {
          "$ref": "#/definitions/CompanyManagedBillingSettings"
        },
        "unpaidInvoiceSettings": {
          "$ref": "#/definitions/UnpaidInvoiceSettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantInvoiceTaxItemSummary": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "percent": {
          "format": "double",
          "type": "number"
        },
        "subtotal": {
          "$ref": "#/definitions/Money"
        },
        "taxAmount": {
          "$ref": "#/definitions/Money"
        }
      }
    },
    "ConsultantInvoiceWriteOff": {
      "type": "object",
      "properties": {
        "amount": {
          "$ref": "#/definitions/Money"
        },
        "notes": {
          "type": "string"
        },
        "writeOffDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "ConsultantMessagingSettings": {
      "type": "object",
      "properties": {
        "addFaxContactsToShared": {
          "type": "boolean",
          "description": " When true, fax contacts are automatically added to the shared team contacts list."
        },
        "autoSelectLastUpdatedChatSession": {
          "type": "boolean",
          "description": " When true, the chat panel automatically selects the conversation that was most recently updated when the practitioner opens the messaging view."
        },
        "availability": {
          "type": "string",
          "description": " The practitioner's displayed messaging availability status shown to clients. Possible values are `online` `away` `offline`."
        },
        "chatAutoResponderSettings": {
          "$ref": "#/definitions/ChatAutoResponderSettings"
        },
        "chatMessageCharacterLimit": {
          "type": "integer",
          "description": " The maximum number of characters allowed in a single outgoing chat message from a client. Null means no custom limit is set.",
          "format": "int32"
        },
        "clientNameStyle": {
          "type": "string",
          "description": " Controls how client names are displayed in the practitioner portal. Possible values are `lastinitial` `lastfirst` `firstlast` `firstlastinitial` `first` `anonymous`."
        },
        "defaultSharedChatTeamMemberIds": {
          "type": "array",
          "description": " The set of team member IDs who are added by default to shared chat conversations with clients.",
          "uniqueItems": true,
          "items": {
            "type": "string"
          }
        },
        "defaultToBlacklist": {
          "type": "boolean",
          "description": " When true, new clients are added to the messaging blacklist by default, preventing them from sending direct messages."
        },
        "disableDelete": {
          "type": "boolean",
          "description": " When true, sent chat messages cannot be deleted by any participant. Once enabled, this setting cannot be disabled."
        },
        "disableForegroundAlerts": {
          "type": "boolean",
          "description": " When true, foreground in-app alert banners for new messages are suppressed while the practitioner is actively using the portal."
        },
        "disableImpromptuVideoSessions": {
          "type": "boolean",
          "description": " When true, the option for clients to start an impromptu video session directly from the chat is disabled."
        },
        "emailHeaderCaption": {
          "type": "string",
          "description": " The company or practice name displayed as a caption in the header of automated client emails. Maximum 100 characters.",
          "maxLength": 100
        },
        "emailHeaderTitle": {
          "type": "string",
          "description": " The practitioner name and credentials displayed in the header of automated client emails. Maximum 100 characters.",
          "maxLength": 100
        },
        "emailSenderName": {
          "type": "string",
          "description": " The name shown in the \"From\" field of automated emails sent to clients (e.g. \"Dr. Jane Smith, RD\"). Maximum 100 characters.",
          "maxLength": 100
        },
        "emailSignature": {
          "type": "string",
          "description": " HTML content appended to the footer of all automated client emails as the practitioner's email signature.",
          "maxLength": 6000
        },
        "enableForegroundBrowserInstantAlerts": {
          "type": "boolean",
          "description": " When true, instant browser alert notifications are shown for new messages when the practitioner is actively using the portal in a web browser."
        },
        "faxBlacklist": {
          "type": "array",
          "description": " The list of fax numbers that are blocked from receiving outgoing faxes.",
          "items": {
            "type": "string"
          }
        },
        "faxContacts": {
          "type": "array",
          "description": " The list of healthcare provider fax contacts saved for this practitioner.",
          "items": {
            "$ref": "#/definitions/HealthcareProvider"
          }
        },
        "faxSenderName": {
          "type": "string",
          "description": " The sender name shown on outgoing fax cover sheets."
        },
        "groupChatNotifications": {
          "type": "array",
          "description": " The notification types enabled for group chat messages. Controls which group chat events trigger alerts to the practitioner.",
          "items": {
            "type": "string"
          }
        },
        "includeFaxCoverSheet": {
          "type": "boolean",
          "description": " When true, a cover sheet is included when documents are sent by fax."
        },
        "insecureNotifications": {
          "type": "boolean",
          "description": " When true, client notification emails include message content in the email body rather than requiring login to read."
        },
        "insecureReminderNotifications": {
          "type": "boolean",
          "description": " When true, client notes are included in the body of \"reminder completed\" emails sent to the practitioner. When false (the default), the email omits note content and requires the practitioner to log in to view it."
        },
        "replyToAddress": {
          "type": "string",
          "description": " The email address that client replies are directed to. When set, replies to automated emails arrive at this address rather than the default Practice Better address."
        },
        "sendOnEnter": {
          "type": "boolean",
          "description": " When true, pressing the Enter key in the chat input sends the message immediately instead of inserting a new line."
        },
        "snoozeSettings": {
          "$ref": "#/definitions/NotificationSnoozeSettings"
        },
        "useLogoInEmailSignature": {
          "type": "boolean",
          "description": " When true, the practice logo is displayed at the bottom of automated client emails as part of the email signature."
        },
        "useProfilePhotoInEmailHeader": {
          "type": "boolean",
          "description": " When true, the practitioner's profile photo is displayed alongside their name in the header of automated client emails."
        }
      },
      "additionalProperties": false
    },
    "ConsultantPrintSettings": {
      "type": "object",
      "properties": {
        "displayCompanyNameInHeader": {
          "type": "boolean",
          "description": " When true, the company name is included in the header of printed PDF forms and waivers."
        },
        "displayContactInfoInFooter": {
          "type": "boolean",
          "description": " When true, the practitioner's contact information is included in the footer of printed PDF documents."
        },
        "displayDocumentIdInFooter": {
          "type": "boolean",
          "description": " When true, a unique document ID is included in the PDF footer, which can be used for auditing and reporting purposes."
        },
        "displaySloganInFooter": {
          "type": "boolean",
          "description": " When true, the practitioner's company slogan is included in the footer of printed PDF documents."
        },
        "formTemplate": {
          "$ref": "#/definitions/PdfHeaderFooterTemplate"
        },
        "invoiceTemplate": {
          "$ref": "#/definitions/PdfHeaderFooterTemplate"
        },
        "logoAlignment": {
          "type": "string",
          "description": " The horizontal alignment of the practice logo on printed PDFs. Possible values are `left` `lefttop` `right` `top`."
        },
        "logoSize": {
          "type": "string",
          "description": " The size of the practice logo on printed PDFs. Possible values are `normal` `large`."
        },
        "noteTemplate": {
          "$ref": "#/definitions/PdfHeaderFooterTemplate"
        },
        "printFormat": {
          "type": "string",
          "description": " The color scheme used for printed PDFs. Possible values are `eco` (black and white) `graphic` (uses the practice theme color)."
        },
        "protocolTemplate": {
          "$ref": "#/definitions/PdfHeaderFooterTemplate"
        },
        "superbillTemplate": {
          "$ref": "#/definitions/PdfHeaderFooterTemplate"
        }
      },
      "additionalProperties": false
    },
    "ConsultantPrintSettingsUpdateFragment": {
      "type": "object",
      "description": "Request body for updating the consultant's PDF print settings (logo alignment, color scheme, header/footer templates, etc.).",
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose print settings to update. Omit to update the authenticated consultant's own print settings. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "printSettings": {
          "$ref": "#/definitions/ConsultantPrintSettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantProfile": {
      "type": "object",
      "properties": {
        "availabilitySettings": {
          "$ref": "#/definitions/ConsultantAvailabilitySettings"
        },
        "bio": {
          "type": "string",
          "description": " The consultant's full biography displayed on their public profile page. Null if not set."
        },
        "bookingSettings": {
          "$ref": "#/definitions/ConsultantBookingSettings"
        },
        "claimMdSettings": {
          "$ref": "#/definitions/ClaimMdAccountSettings"
        },
        "clientRecordSettings": {
          "$ref": "#/definitions/ConsultantClientRecordSettings"
        },
        "dashboardSettings": {
          "$ref": "#/definitions/ConsultantDashboardSettings"
        },
        "defaultCurrency": {
          "type": "string",
          "description": " The ISO 4217 currency code set as this consultant's default for invoicing and billing (e.g. `usd` `cad` `gbp`). Null if the consultant has not configured a default currency."
        },
        "evexiaSettings": {
          "$ref": "#/definitions/EvexiaAccountSettings"
        },
        "firstName": {
          "type": "string",
          "description": " The consultant's first name as set on their practitioner profile."
        },
        "formSettings": {
          "$ref": "#/definitions/ConsultantFormSettings"
        },
        "fullscriptSettings": {
          "$ref": "#/definitions/FullscriptAccountSettings"
        },
        "googleCalendarSettings": {
          "$ref": "#/definitions/GoogleCalendarSettings"
        },
        "healthInsuranceSettings": {
          "$ref": "#/definitions/ConsultantHealthInsuranceSettings"
        },
        "invoiceSettings": {
          "$ref": "#/definitions/ConsultantInvoiceSettings"
        },
        "lastName": {
          "type": "string",
          "description": " The consultant's last name as set on their practitioner profile."
        },
        "messagingSettings": {
          "$ref": "#/definitions/ConsultantMessagingSettings"
        },
        "naturalDispensarySettings": {
          "$ref": "#/definitions/NaturalDispensaryAccountSettings"
        },
        "occupation": {
          "type": "string",
          "description": " The consultant's professional role or occupation as displayed on their public profile page (e.g. `Registered Dietitian` `Health Coach` `Nutritional Therapist`). Corresponds to the Professional Title field in their practitioner profile. Null if not set."
        },
        "printSettings": {
          "$ref": "#/definitions/ConsultantPrintSettings"
        },
        "professionalDesignationLetters": {
          "type": "string",
          "description": " A comma-separated string of the consultant's professional credential letters, derived from their registered accreditations (e.g. `RD, CDE` `CNP, FNTP`). Null if no accreditations have been added. See [Adding Accreditations](https://help.practicebetter.io/hc/en-us/articles/234583748-Adding-Accreditations)."
        },
        "professionalDesignations": {
          "type": "array",
          "description": " The consultant's registered professional designations, each with the accreditation name, governing body, and registration details. Null if no designations have been added. See [Adding Accreditations](https://help.practicebetter.io/hc/en-us/articles/234583748-Adding-Accreditations).",
          "items": {
            "$ref": "#/definitions/ProfessionalDesignation"
          }
        },
        "profilePhoto": {
          "$ref": "#/definitions/Image"
        },
        "protocolSettings": {
          "$ref": "#/definitions/ConsultantProtocolSettings"
        },
        "rupaSettings": {
          "$ref": "#/definitions/RupaAccountSettings"
        },
        "shortBio": {
          "type": "string",
          "description": " A short biographical summary displayed on the consultant's public booking page (max 200 characters). Null if not set."
        },
        "socialNetworkSettings": {
          "$ref": "#/definitions/SocialNetworkSettings"
        },
        "storageSettings": {
          "$ref": "#/definitions/UserStorageSettings"
        },
        "telehealthSettings": {
          "$ref": "#/definitions/ConsultantTelehealthSettings"
        },
        "timeZone": {
          "type": "string",
          "description": " The consultant's time zone using Windows Standard time zone names (e.g. `Eastern Standard Time`). Defaults to Eastern Time if not explicitly set."
        },
        "title": {
          "type": "string",
          "description": " The consultant's professional title or honorific as set on their practitioner profile (e.g. `Dr.` `Ms.` `Mr.`). Null if not set. See [Setting Up Your Practitioner and Company Profiles](https://help.practicebetter.io/hc/en-us/articles/42206527444123-Setting-Up-Your-Practitioner-and-Company-Profiles)."
        },
        "webAnalyticsSettings": {
          "$ref": "#/definitions/ConsultantWebAnalyticsSettings"
        },
        "wholescriptsSettings": {
          "$ref": "#/definitions/WholescriptsAccountSettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantProtocolSettings": {
      "type": "object",
      "properties": {
        "autoAddSupplementsToFavorites": {
          "type": "boolean",
          "description": " When true, supplements added to any protocol are automatically added to the practitioner's favorites list for quicker access in future protocols."
        }
      },
      "additionalProperties": false
    },
    "ConsultantProtocolSettingsUpdateFragment": {
      "type": "object",
      "description": "Request body for updating the consultant's supplement protocol settings (auto-favorites, etc.).",
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose protocol settings to update. Omit to update the authenticated consultant's own protocol settings. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "protocolSettings": {
          "$ref": "#/definitions/ConsultantProtocolSettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantSocialNetworkSettingsUpdateFragment": {
      "type": "object",
      "description": "Request body for updating the consultant's social network profile links.",
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose social settings to update. Omit to update the authenticated consultant's own social settings. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "socialNetworkSettings": {
          "$ref": "#/definitions/SocialNetworkSettings"
        }
      },
      "additionalProperties": false
    },
    "ConsultantTelehealthSettings": {
      "type": "object",
      "properties": {
        "backgroundEffect": {
          "type": "string",
          "description": " The virtual background effect applied during telehealth video sessions. Possible values: `blur` (background blur), `background` (custom background image set via backgroundImage). Null if no effect is configured."
        },
        "backgroundImage": {
          "$ref": "#/definitions/Image"
        },
        "disableZoomTranscriptionSummarization": {
          "type": "boolean",
          "description": " When true, AI-generated transcription summarization is disabled for Zoom sessions even when Zoom is the configured telehealth application."
        },
        "enableRecordingOnStart": {
          "type": "boolean",
          "description": " When true, session recording starts automatically when a telehealth video session begins."
        },
        "enableTeamMemberRecordingAccess": {
          "type": "boolean",
          "description": " When true, team members can view and modify recordings of sessions (telehealth and in-person) they did not host, based on their role and permissions."
        },
        "launchApplication": {
          "type": "string",
          "description": " The telehealth application used to launch video sessions. Possible values: `system` (Practice Better built-in telehealth), `zoom` (Zoom), `other` (external application not listed). Null if not configured."
        },
        "recordingTranscriptionSummaryCustomTemplateId": {
          "type": "string"
        },
        "transcriptionLanguageAutoDetectionEnabled": {
          "type": "boolean",
          "description": " When true, the transcription language is detected automatically from the session audio rather than using a fixed language setting."
        },
        "transcriptionSummaryStyle": {
          "type": "string",
          "description": " The AI session summary format used when transcribing telehealth sessions. Possible values are `narrative` (paragraph format) `outline` (key points and bullet points) `soap` (SOAP note format). Null if not configured."
        }
      },
      "additionalProperties": false
    },
    "ConsultantWebAnalyticsSettings": {
      "type": "object",
      "properties": {
        "facebookPixelId": {
          "type": "string",
          "description": " The Facebook Pixel ID used to track conversions from the practitioner's public bookings page. Null if Facebook Pixel is not configured."
        },
        "googleAnalyticsId": {
          "type": "string",
          "description": " The Google Analytics Measurement ID (e.g. \"G-1234567890\") used to track client interactions on the practitioner's bookings page and client portal. Null if Google Analytics is not configured."
        }
      },
      "additionalProperties": false
    },
    "ConsultantWebAnalyticsSettingsUpdateFragment": {
      "type": "object",
      "description": "Request body for updating the consultant's web analytics settings (Google Analytics ID, Facebook Pixel ID).",
      "properties": {
        "asConsultantId": {
          "type": "string",
          "description": " The ID of the consultant whose web analytics settings to update. Omit to update the authenticated consultant's own web analytics settings. Requires the `settings:write` privilege on the target consultant when provided."
        },
        "webAnalyticsSettings": {
          "$ref": "#/definitions/ConsultantWebAnalyticsSettings"
        }
      },
      "additionalProperties": false
    },
    "ContactPerson": {
      "type": "object",
      "required": [
        "firstName",
        "lastName"
      ],
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "emailAddress": {
          "type": "string"
        },
        "firstName": {
          "type": "string",
          "maxLength": 50
        },
        "lastName": {
          "type": "string",
          "maxLength": 50
        },
        "phoneNumber": {
          "type": "string",
          "maxLength": 20
        },
        "preferredName": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Course": {
      "type": "object",
      "properties": {
        "clientEnrollmentEnabled": {
          "type": "boolean",
          "readOnly": true
        },
        "consultant": {
          "type": "object",
          "properties": {
            "company": {
              "description": "<a href=\"/schemas/Company\">Company</a>",
              "type": "object",
              "properties": {}
            },
            "dateCreated": {
              "format": "date-time",
              "type": "string"
            },
            "dateModified": {
              "format": "date-time",
              "type": "string"
            },
            "emailAddress": {
              "type": "string"
            },
            "id": {
              "type": "string"
            },
            "isOwner": {
              "type": "boolean"
            },
            "isPractitioner": {
              "type": "boolean"
            },
            "profile": {
              "description": "<a href=\"/schemas/Stub<ConsultantProfile>\">Stub<ConsultantProfile></a>",
              "type": "object",
              "properties": {}
            }
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "deliveryMode": {
          "type": "string"
        },
        "duration": {
          "$ref": "#/definitions/Duration"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "ended": {
          "type": "boolean",
          "readOnly": true
        },
        "enrollmentCount": {
          "format": "int32",
          "type": "integer",
          "readOnly": true
        },
        "id": {
          "type": "string"
        },
        "isSelfPaced": {
          "type": "boolean"
        },
        "lastEnrollmentDate": {
          "format": "date-time",
          "type": "string"
        },
        "maximumEnrollments": {
          "format": "int32",
          "type": "integer"
        },
        "moduleCount": {
          "format": "int32",
          "type": "integer"
        },
        "moduleGroups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "description": {
                "type": "string"
              },
              "id": {
                "type": "string"
              },
              "moduleIds": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "name": {
                "type": "string"
              },
              "rank": {
                "format": "int32",
                "type": "integer"
              }
            }
          }
        },
        "modules": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "availabilityDependencyIds": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "availabilityDependencyType": {
                "type": "string"
              },
              "available": {
                "type": "boolean"
              },
              "content": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/ICourseModuleContent\">ICourseModuleContent</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "contentAvailability": {
                "type": "string"
              },
              "course": {
                "description": "<a href=\"/schemas/Course\">Course</a>",
                "type": "object",
                "properties": {}
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "dateModified": {
                "format": "date-time",
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "formRequests": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/CourseModuleFormDispatch\">CourseModuleFormDispatch</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "hasResources": {
                "type": "boolean"
              },
              "id": {
                "type": "string"
              },
              "isNotificationOnly": {
                "type": "boolean"
              },
              "name": {
                "type": "string"
              },
              "notificationTemplate": {
                "description": "<a href=\"/schemas/CourseModuleNotification\">CourseModuleNotification</a>",
                "type": "object",
                "properties": {}
              },
              "protocols": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/CourseModuleProtocolDispatch\">CourseModuleProtocolDispatch</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "published": {
                "type": "boolean"
              },
              "publishStatus": {
                "type": "string"
              },
              "quizzes": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/CourseModuleFormDispatch\">CourseModuleFormDispatch</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "rank": {
                "format": "int32",
                "type": "integer"
              },
              "reminders": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/CourseModuleReminderDispatch\">CourseModuleReminderDispatch</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "revision": {
                "format": "int32",
                "type": "integer"
              },
              "sendNotification": {
                "type": "boolean"
              },
              "startAfter": {
                "description": "<a href=\"/schemas/Duration\">Duration</a>",
                "type": "object",
                "properties": {}
              },
              "startDate": {
                "format": "date-time",
                "type": "string"
              },
              "started": {
                "type": "boolean"
              },
              "startTime": {
                "type": "string"
              },
              "thatCleanLifeNutritionPlans": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/CourseModuleThatCleanLifeNutritionPlanDispatch\">CourseModuleThatCleanLifeNutritionPlanDispatch</a>",
                  "type": "object",
                  "properties": {}
                }
              }
            }
          }
        },
        "name": {
          "type": "string"
        },
        "sessions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "actualDuration": {
                "format": "int64",
                "type": "integer"
              },
              "buffer": {
                "description": "<a href=\"/schemas/CalendarEventBuffer\">CalendarEventBuffer</a>",
                "type": "object",
                "properties": {}
              },
              "cancellable": {
                "type": "boolean"
              },
              "cancelled": {
                "type": "boolean"
              },
              "confirmationStatus": {
                "type": "string"
              },
              "consultant": {
                "description": "<a href=\"/schemas/Stub<Consultant>\">Stub<Consultant></a>",
                "type": "object",
                "properties": {}
              },
              "dateConfirmed": {
                "format": "date-time",
                "type": "string"
              },
              "dateCreated": {
                "format": "date-time",
                "type": "string"
              },
              "dateModified": {
                "format": "date-time",
                "type": "string"
              },
              "duration": {
                "format": "int64",
                "type": "integer"
              },
              "endDate": {
                "format": "date-time",
                "type": "string"
              },
              "fee": {
                "description": "<a href=\"/schemas/Money\">Money</a>",
                "type": "object",
                "properties": {}
              },
              "hasRecording": {
                "type": "boolean"
              },
              "id": {
                "type": "string"
              },
              "insurancePoliciesChecked": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/HealthInsurancePolicy\">HealthInsurancePolicy</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "internalNotesHistory": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/SessionBookingNotes\">SessionBookingNotes</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "isRecurring": {
                "type": "boolean"
              },
              "isSubscription": {
                "type": "boolean"
              },
              "location": {
                "description": "<a href=\"/schemas/OfficeLocation\">OfficeLocation</a>",
                "type": "object",
                "properties": {}
              },
              "notes": {
                "type": "string"
              },
              "notesHistory": {
                "type": "array",
                "items": {
                  "description": "<a href=\"/schemas/SessionBookingNotes\">SessionBookingNotes</a>",
                  "type": "object",
                  "properties": {}
                }
              },
              "paymentStatus": {
                "type": "string"
              },
              "service": {
                "description": "<a href=\"/schemas/ProfessionalService\">ProfessionalService</a>",
                "type": "object",
                "properties": {}
              },
              "serviceType": {
                "type": "string"
              },
              "sessionDate": {
                "format": "date-time",
                "type": "string"
              },
              "sessionNotes": {
                "description": "<a href=\"/schemas/ClientSessionNotes\">ClientSessionNotes</a>",
                "type": "object",
                "properties": {}
              },
              "timeZone": {
                "type": "string"
              },
              "upcoming": {
                "type": "boolean"
              }
            }
          }
        },
        "sessionSettings": {
          "type": "object",
          "properties": {
            "autoAddEnrollments": {
              "type": "boolean"
            },
            "autoConfirmSessionEnrollments": {
              "type": "boolean"
            },
            "sendConfirmations": {
              "type": "boolean"
            },
            "sendReminders": {
              "type": "boolean"
            }
          }
        },
        "sku": {
          "type": "string"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        },
        "started": {
          "type": "boolean",
          "readOnly": true
        }
      }
    },
    "CourseEnrollment": {
      "type": "object",
      "properties": {
        "availableModules": {
          "format": "int32",
          "type": "integer"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "completedModules": {
          "format": "int32",
          "type": "integer"
        },
        "dateArchived": {
          "format": "date-time",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateEnrolled": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dispatchedNotificationModules": {
          "format": "int32",
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "modules": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CourseEnrollmentModule"
          }
        },
        "paymentStatus": {
          "type": "string"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "CourseEnrollmentCreateFragment": {
      "type": "object",
      "properties": {
        "clientRecordIds": {
          "description": "\r\nThe IDs of the client records that should be enrolled into the program.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "clientRecords": {
          "$ref": "#/definitions/ClientRecordSelectionFragment"
        }
      }
    },
    "CourseEnrollmentModule": {
      "type": "object",
      "properties": {
        "accessRevoked": {
          "type": "boolean"
        },
        "contentAvailable": {
          "type": "boolean"
        },
        "contentAvailableWithAccess": {
          "type": "boolean",
          "readOnly": true
        },
        "dateCompleted": {
          "format": "date-time",
          "type": "string"
        },
        "dateDispatched": {
          "format": "date-time",
          "type": "string"
        },
        "forms": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormRequest"
          }
        },
        "formsCompleted": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "isNotificationOnly": {
          "type": "boolean"
        },
        "moduleId": {
          "type": "string",
          "readOnly": true
        },
        "notificationDispatched": {
          "type": "boolean"
        },
        "protocols": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Protocol"
          }
        },
        "protocolsViewed": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "quizResults": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/QuizResults"
          }
        },
        "quizzes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormRequest"
          }
        },
        "reminders": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Reminder"
          }
        },
        "remindersCompleted": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "thatCleanLifeEmbeds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CourseModuleThatCleanLifeNutritionEmbed"
          }
        }
      }
    },
    "CourseModuleThatCleanLifeNutritionEmbed": {
      "type": "object",
      "properties": {
        "accessToken": {
          "type": "string"
        },
        "displayNutritionFacts": {
          "type": "boolean"
        },
        "expires": {
          "format": "date-time",
          "type": "string"
        },
        "externalId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "nutritionPlanId": {
          "type": "string"
        },
        "recommendationId": {
          "type": "string"
        },
        "refreshToken": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "CreateWebhookSubscriptionFragment": {
      "type": "object",
      "required": [
        "endpointUrl",
        "eventTypes",
        "verificationToken"
      ],
      "properties": {
        "autoEnable": {
          "type": "boolean",
          "description": " Whether to automatically enable the subscription after successful verification.\r\nDefaults to true."
        },
        "description": {
          "type": "string",
          "description": " Description for this webhook subscription for identification purposes.",
          "maxLength": 500
        },
        "endpointUrl": {
          "type": "string",
          "description": " The HTTPS endpoint URL that will receive webhook traffic.\r\nOn subscription creation, Practice Better first sends a one-time verification **GET** request to\r\nthis URL (see the Create endpoint documentation for the handshake), and afterwards delivers event\r\nnotifications as signed **POST** requests.\r\nMust be a publicly reachable HTTPS URL on port 443. The URL is used exactly as provided — no\r\ntrailing-slash, www, or scheme normalization is applied — so register the final canonical URL.",
          "format": "uri"
        },
        "eventTypes": {
          "type": "array",
          "description": " List of event types to subscribe to. At least one is required.\r\nUse GET /api/webhooks/subscription/event/types to retrieve all supported values.\r\nExample values: \"invoice.paid\", \"client.record.created\", \"session.confirmed\", \"protocol.published\".",
          "items": {
            "type": "string"
          }
        },
        "metadata": {
          "type": "object",
          "description": " Optional metadata key-value pairs for custom tracking and organization.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "verificationToken": {
          "type": "string",
          "description": " A secret you generate and store on your endpoint, used to authenticate the one-time\r\nverification handshake. During creation, Practice Better sends a GET request to your EndpointUrl\r\nwith `challenge` and `verification_token` query parameters. Your endpoint should confirm\r\n`verification_token` matches this value, then respond 200 with a JSON body\r\n`{ \"challenge\": \"<echoed challenge>\", \"timestamp\": <current Unix time in seconds> }`.\r\nThis is separate from the signing secret (see PlaintextSigningSecret on the response) used to sign\r\nongoing event POSTs. Required for all webhook subscriptions.",
          "maxLength": 500
        }
      },
      "additionalProperties": false
    },
    "CronometerDiaryFoodEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "completed": {
          "type": "boolean"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "foods": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CronometerFood"
          }
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "nutrientSnapshot": {
          "$ref": "#/definitions/NutrientAmountCollection"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "CronometerDiaryMetricEntry": {
      "type": "object",
      "properties": {
        "bloodGlucose": {
          "format": "double",
          "type": "number"
        },
        "bloodPressure": {
          "$ref": "#/definitions/BloodPressure"
        },
        "bodyFatPercentage": {
          "format": "double",
          "type": "number"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "completed": {
          "type": "boolean"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "heartRate": {
          "format": "double",
          "type": "number"
        },
        "height": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CronometerMetric"
          }
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        },
        "waistCircumference": {
          "format": "double",
          "type": "number"
        },
        "weight": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "CronometerFood": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string"
        },
        "servingDescription": {
          "type": "string"
        },
        "timestamp": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "CronometerMetric": {
      "type": "object",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "isInternalMetric": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "timestamp": {
          "format": "date-time",
          "type": "string"
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "Date": {
      "type": "string",
      "additionalProperties": false
    },
    "DateRange": {
      "type": "object",
      "properties": {
        "endDate": {
          "$ref": "#/definitions/Date"
        },
        "startDate": {
          "$ref": "#/definitions/Date"
        }
      }
    },
    "DateTimeRange": {
      "type": "object",
      "properties": {
        "endDate": {
          "type": "string",
          "description": " The end of the date-time range (UTC). Must be on or after `startDate`.",
          "format": "date-time"
        },
        "startDate": {
          "type": "string",
          "description": " The start of the date-time range (UTC).",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "Disclaimer": {
      "type": "object",
      "properties": {
        "agreementClause": {
          "type": "string"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "content": {
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "DrFirstMedication": {
      "type": "object",
      "properties": {
        "brandName": {
          "type": "string"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dosageText": {
          "type": "string"
        },
        "drugCodingLevel": {
          "type": "string"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "form": {
          "type": "string"
        },
        "frequency": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isActive": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "productName": {
          "type": "string"
        },
        "route": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "Duration": {
      "type": "object",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "EmergencyContact": {
      "type": "object",
      "required": [
        "firstName",
        "lastName"
      ],
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "changeRequestInstanceChanged": {
          "type": "boolean",
          "description": " This field is used to indicate that a client has updated their profile and initiated a change request. Meaning their profile is\r\nnot necessarily in sync with the company's version of the profile. This field should not be modified if executing an update, and should be ignored\r\nwhen creating a client record."
        },
        "dayOfBirth": {
          "$ref": "#/definitions/Date"
        },
        "emailAddress": {
          "type": "string",
          "maxLength": 100
        },
        "firstName": {
          "type": "string",
          "maxLength": 50
        },
        "genderIdentity": {
          "type": "string",
          "description": " E.g. `Man/Boy` `Woman/Girl` `Non-binary` `Transgender` `Agender` `Fluid` `Queer` `Prefer not to say`."
        },
        "homePhone": {
          "type": "string",
          "maxLength": 20
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the Emergency Contact (only relevant when updating - omit for create)."
        },
        "lastName": {
          "type": "string",
          "maxLength": 50
        },
        "maritalStatus": {
          "type": "string",
          "description": " One of `single` `commonlaw` `married` `partnered` `separated` `divorced` `widowed`."
        },
        "mobilePhone": {
          "type": "string",
          "maxLength": 20
        },
        "occupation": {
          "type": "string",
          "maxLength": 100
        },
        "relationship": {
          "type": "string",
          "maxLength": 50
        },
        "title": {
          "type": "string",
          "maxLength": 50
        },
        "workHoursPerWeek": {
          "type": "number",
          "format": "double"
        }
      },
      "additionalProperties": false
    },
    "EntityLink": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": " The unique identifier of the linked entity."
        },
        "label": {
          "type": "string",
          "description": " A human-readable label for the linked entity. Null if no label is available."
        },
        "type": {
          "type": "string",
          "description": " The type of the linked entity (e.g. `service` `package` `program` `clientrecord`)."
        }
      },
      "additionalProperties": false
    },
    "EvexiaAccountSettings": {
      "type": "object",
      "properties": {
        "clientId": {
          "type": "string",
          "description": " The Evexia client ID that uniquely identifies the linked Evexia account. Practitioners within the same company may or may not link to the same account."
        },
        "dateSynchronized": {
          "type": "string",
          "description": " UTC timestamp when the last Evexia sync operation was performed. Null if a sync has never been run.",
          "format": "date-time"
        },
        "includeFhr": {
          "type": "boolean",
          "description": " When true, Functional Health Reports are included by default when ordering Evexia lab products that support this option. Determines the default selection when creating each Evexia lab request."
        },
        "payForClientLabs": {
          "type": "boolean",
          "description": " Controls who pays for client lab tests. When true, the practitioner pays and bills clients separately. When false, clients pay Evexia directly. Determines the default selection when creating each Evexia lab request."
        }
      },
      "additionalProperties": false
    },
    "ExternalApiError": {
      "type": "object",
      "properties": {
        "externalErrorCode": {
          "type": "string"
        },
        "message": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "statusCode": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ExternalInsuranceCoverage": {
      "type": "object",
      "properties": {
        "benefitCode": {
          "type": "string"
        },
        "coverageDetails": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExternalInsuranceCoverageDetail"
          }
        },
        "coverageInfo": {
          "$ref": "#/definitions/ExternalInsuranceCoverageInfo"
        },
        "serviceType": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ExternalInsuranceCoverageDetail": {
      "type": "object",
      "properties": {
        "coverageOptions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExternalInsuranceCoverageOption"
          }
        },
        "level": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ExternalInsuranceCoverageEntity": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "dateOfLastUpdate": {
          "$ref": "#/definitions/Date"
        },
        "description": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "note": {
          "type": "string"
        },
        "website": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ExternalInsuranceCoverageInfo": {
      "type": "object",
      "properties": {
        "coverageName": {
          "type": "string"
        },
        "entity": {
          "$ref": "#/definitions/ExternalInsuranceCoverageEntity"
        },
        "type": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ExternalInsuranceCoverageOption": {
      "type": "object",
      "properties": {
        "note": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ExternalInsurancePlan": {
      "type": "object",
      "properties": {
        "groupNumber": {
          "type": "string"
        },
        "insuranceCoverages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ExternalInsuranceCoverage"
          }
        },
        "insuranceNumber": {
          "type": "string"
        },
        "insuredAddress": {
          "$ref": "#/definitions/Address"
        },
        "insuredDateOfBirth": {
          "$ref": "#/definitions/Date"
        },
        "insuredFirstName": {
          "type": "string"
        },
        "insuredGender": {
          "type": "string"
        },
        "insuredLastName": {
          "type": "string"
        },
        "planBeginDate": {
          "$ref": "#/definitions/Date"
        },
        "planEndDate": {
          "$ref": "#/definitions/Date"
        },
        "planNumber": {
          "type": "string"
        },
        "resultDate": {
          "$ref": "#/definitions/Date"
        }
      },
      "additionalProperties": false
    },
    "FitbitActivity": {
      "type": "object",
      "properties": {
        "calories": {
          "format": "int32",
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "distance": {
          "format": "double",
          "type": "number"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "startTime": {
          "type": "string"
        },
        "steps": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "FitbitEntry": {
      "type": "object",
      "properties": {
        "activities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FitbitActivity"
          }
        },
        "calories": {
          "format": "int32",
          "type": "integer"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "distance": {
          "format": "double",
          "type": "number"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "floors": {
          "format": "int32",
          "type": "integer"
        },
        "hasActivity": {
          "type": "boolean"
        },
        "hasSleep": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "naps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FitbitSleep"
          }
        },
        "nightlySleep": {
          "$ref": "#/definitions/FitbitSleep"
        },
        "restingHeartRate": {
          "format": "int32",
          "type": "integer"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "steps": {
          "format": "int32",
          "type": "integer"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "FitbitSleep": {
      "type": "object",
      "properties": {
        "adjustedDuration": {
          "format": "int64",
          "type": "integer"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "efficiency": {
          "format": "double",
          "type": "number"
        },
        "endTime": {
          "format": "date-time",
          "type": "string"
        },
        "levels": {
          "$ref": "#/definitions/FitbitSleepLevels"
        },
        "startTime": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "FitbitSleepLevels": {
      "type": "object",
      "properties": {
        "summary": {
          "$ref": "#/definitions/FitbitSleepSummary"
        }
      }
    },
    "FitbitSleepSummary": {
      "type": "object",
      "properties": {
        "asleep": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        },
        "awake": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        },
        "deep": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        },
        "light": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        },
        "rem": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        },
        "restless": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        },
        "wake": {
          "$ref": "#/definitions/FitbitSleepSummaryItem"
        }
      }
    },
    "FitbitSleepSummaryItem": {
      "type": "object",
      "properties": {
        "count": {
          "format": "int32",
          "type": "integer"
        },
        "minutes": {
          "format": "int32",
          "type": "integer"
        },
        "thirtyDayAvgMinutes": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "FoodIntakeSummaryEntry": {
      "type": "object",
      "properties": {
        "afterDinnerSnack": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "bedtimeSnack": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "breakfast": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dinner": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "lunch": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "midAfternoonSnack": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "midMorningSnack": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        },
        "wakeUpSnack": {
          "$ref": "#/definitions/MealTimeMoodSummary"
        }
      }
    },
    "FoodMoodJournalCreateRequest": {
      "type": "object",
      "properties": {
        "hideFood": {
          "type": "boolean",
          "description": " When true, the Food logging tab is hidden from the client in this journal. When null, defaults to false (food logging is shown)."
        },
        "hideNutrientBreakdown": {
          "type": "boolean",
          "description": " When true, the nutrient breakdown panel (showing macros and micronutrients) is hidden from the client in this journal. When null, defaults to false (nutrient breakdown is shown)."
        },
        "hideWater": {
          "type": "boolean",
          "description": " When true, the Water tracking tab is hidden from the client in this journal. When null, defaults to false (water tracking is shown)."
        },
        "notes": {
          "type": "string",
          "description": " An optional introductory note or instruction displayed to the client alongside this journal. Maximum 2000 characters.",
          "maxLength": 2000
        }
      },
      "additionalProperties": false
    },
    "FoodRecommendation": {
      "type": "object",
      "properties": {
        "examples": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "recommendationType": {
          "type": "string"
        },
        "relatedConditions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthCondition"
          }
        },
        "title": {
          "type": "string"
        }
      }
    },
    "Form": {
      "type": "object",
      "properties": {
        "aggregates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormAggregate"
          }
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "FormAggregate": {
      "required": [
        "label",
        "calculationType",
        "questions"
      ],
      "type": "object",
      "properties": {
        "calculationType": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "label": {
          "type": "string"
        },
        "questions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormAggregateQuestion"
          }
        },
        "visibleToClient": {
          "type": "boolean"
        }
      }
    },
    "FormAggregateAnswer": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      }
    },
    "FormAggregateQuestion": {
      "required": [
        "questionIndex"
      ],
      "type": "object",
      "properties": {
        "questionIndex": {
          "format": "int32",
          "type": "integer"
        },
        "weight": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "FormConsent": {
      "type": "object",
      "properties": {
        "consentProvided": {
          "type": "boolean",
          "readOnly": true
        },
        "consentRequest": {
          "$ref": "#/definitions/FormConsentRequest"
        },
        "dateConsented": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "signature": {
          "$ref": "#/definitions/Image"
        }
      }
    },
    "FormConsentRequest": {
      "required": [
        "requestType"
      ],
      "type": "object",
      "properties": {
        "acknowledgement": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "requestType": {
          "type": "string"
        },
        "signeeOrder": {
          "format": "int32",
          "type": "integer"
        },
        "signeeRole": {
          "type": "string"
        }
      }
    },
    "FormRequest": {
      "type": "object",
      "properties": {
        "clientRecord": {
          "$ref": "#/definitions/Client<ClientRecord>"
        },
        "completed": {
          "type": "boolean"
        },
        "completedForm": {
          "$ref": "#/definitions/CompletedForm"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateCompleted": {
          "format": "date-time",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "form": {
          "$ref": "#/definitions/Form"
        },
        "hasAnswers": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "isRecurring": {
          "type": "boolean"
        },
        "lastImportDate": {
          "format": "date-time",
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/FormRequestReview"
        },
        "selfSubmit": {
          "type": "boolean"
        },
        "started": {
          "type": "boolean"
        }
      }
    },
    "FormRequestFragment": {
      "required": [
        "formIds"
      ],
      "type": "object",
      "properties": {
        "asConsultantId": {
          "description": " The ID of the consultant assigned to the form requests.",
          "type": "string"
        },
        "clientRecordId": {
          "description": " The ID of the client that should be sent the form requests. (Note: clientRecordId and clientRecordIds are mutually exclusive - use one or the other)",
          "type": "string"
        },
        "clientRecordIds": {
          "description": " The IDs of the client records that should be sent the form requests.  (Note: clientRecordId and clientRecordIds are mutually exclusive - use one or the other)",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "clientRecords": {
          "$ref": "#/definitions/ClientRecordSelectionFragment"
        },
        "formIds": {
          "description": " A list of form IDs for the client to complete.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "notes": {
          "type": "string"
        },
        "packageInstanceId": {
          "description": " Optionally link this request to a package instance. (not valid for batch operation using clientRecordIds)",
          "type": "string"
        },
        "sendNutriQ": {
          "description": " Flag to send the NTA NAQ form to the client (via [Nutritional Therapy Association Integration]))",
          "type": "boolean"
        },
        "sendNutriQv2": {
          "description": " Flag to send the NTA NAQ V2 form to the client (via [Nutritional Therapy Association Integration]))",
          "type": "boolean"
        },
        "sendWellnessQuestionnaire": {
          "description": " Flag to send the Wellness Questionnaire form to the client (via [Whole Practice Integration](https://help.practicebetter.io/hc/en-us/articles/360056998212))",
          "type": "boolean"
        },
        "sessionId": {
          "description": " Optionally link the form requests to a session (one-on-one) when using clientRecordId\r\nor to a group session when sending in batch using clientRecordIds.",
          "type": "string"
        }
      }
    },
    "FormRequestQuestionNotes": {
      "type": "object",
      "properties": {
        "notes": {
          "type": "string"
        },
        "pinned": {
          "type": "boolean"
        },
        "questionId": {
          "type": "string"
        }
      }
    },
    "FormRequestReview": {
      "type": "object",
      "properties": {
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "publishStatus": {
          "type": "string"
        },
        "questionNotes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FormRequestQuestionNotes"
          }
        },
        "revision": {
          "format": "int32",
          "type": "integer"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "FullscriptAccountSettings": {
      "type": "object",
      "required": [
        "practitionerId"
      ],
      "properties": {
        "autoCreateTreatmentPlans": {
          "type": "boolean",
          "description": " When true, new protocols default to having the create-treatment-plan flag enabled, so that publishing a protocol that contains Fullscript supplements automatically creates a Fullscript treatment plan."
        },
        "clinicId": {
          "type": "string",
          "description": " The Fullscript clinic ID that uniquely identifies the linked Fullscript clinic. Practitioners on the same Practice Better team may or may not link to the same clinic."
        },
        "country": {
          "type": "string",
          "description": " The country in which the Fullscript account operates. Determines available products and lab panels. Possible values are `US` `CA`."
        },
        "dateLabsSynchronized": {
          "type": "string",
          "description": " UTC timestamp when Fullscript lab data was last synchronized with Practice Better. Null if labs have never been synced.",
          "format": "date-time"
        },
        "disableLabs": {
          "type": "boolean",
          "description": " When true, new Fullscript lab orders cannot be created. Existing orders and plan updates already in progress are still processed."
        },
        "displayTemplates": {
          "type": "boolean",
          "description": " When true, Fullscript protocol templates are displayed when the practitioner creates a protocol from a template."
        },
        "matchPatientsByEmailAddress": {
          "type": "boolean",
          "description": " When true, existing Fullscript patients are matched to clients by email address when ordering."
        },
        "notifyOnFinalResultsOnly": {
          "type": "boolean",
          "description": " When true, lab-update notifications are only sent when a new final result is received from Fullscript. Notifications for partial updates and re-downloads of already-received final results are suppressed."
        },
        "practitionerId": {
          "type": "string",
          "description": " The Fullscript practitioner ID that links this Practice Better account to the practitioner's Fullscript profile."
        },
        "sendTreatmentEmail": {
          "type": "boolean",
          "description": " When true, an email notification is sent to the client when a Fullscript treatment plan is created on their behalf."
        },
        "showRecommendationSuggestions": {
          "type": "boolean",
          "description": " When true, recommended dosage hints are shown from the Fullscript product when a supplement is selected."
        }
      },
      "additionalProperties": false
    },
    "FullscriptTreatmentPlanDescriptor": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string"
        }
      }
    },
    "GarminActivitySummary": {
      "type": "object",
      "properties": {
        "activeKilocalories": {
          "format": "int32",
          "type": "integer"
        },
        "activityId": {
          "type": "string"
        },
        "activityType": {
          "type": "string"
        },
        "averageHeartRateInBeatsPerMinute": {
          "format": "double",
          "type": "number"
        },
        "calendarDate": {
          "format": "date-time",
          "type": "string"
        },
        "deviceName": {
          "type": "string"
        },
        "distance": {
          "format": "double",
          "type": "number"
        },
        "distanceInKilometers": {
          "format": "double",
          "type": "number"
        },
        "distanceInMeters": {
          "format": "double",
          "type": "number"
        },
        "durationInMinutes": {
          "format": "int64",
          "type": "integer"
        },
        "durationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "isParent": {
          "type": "boolean"
        },
        "isWebUpload": {
          "type": "boolean"
        },
        "manual": {
          "type": "boolean"
        },
        "maxHeartRateInBeatsPerMinute": {
          "format": "double",
          "type": "number"
        },
        "maxPushCadenceInPushesPerMinute": {
          "format": "double",
          "type": "number"
        },
        "maxSpeedInMetersPerSecond": {
          "format": "double",
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "offsetInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "pushes": {
          "format": "int32",
          "type": "integer"
        },
        "startTime": {
          "format": "date-time",
          "type": "string"
        },
        "startTimeInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "startTimeOffsetInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "steps": {
          "format": "int32",
          "type": "integer"
        },
        "totalElevationGainInMeters": {
          "format": "double",
          "type": "number"
        },
        "totalElevationLossInMeters": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "GarminEntry": {
      "type": "object",
      "properties": {
        "activities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GarminActivitySummary"
          }
        },
        "calories": {
          "format": "int32",
          "type": "integer"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "distance": {
          "format": "double",
          "type": "number"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "floors": {
          "format": "int32",
          "type": "integer"
        },
        "hasActivity": {
          "type": "boolean"
        },
        "hasSleep": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "restingHeartRate": {
          "format": "int32",
          "type": "integer"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "sleepData": {
          "$ref": "#/definitions/GarminSleepSummary"
        },
        "steps": {
          "format": "int32",
          "type": "integer"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "GarminNap": {
      "type": "object",
      "properties": {
        "napDurationInSeconds": {
          "format": "int64",
          "type": "integer"
        },
        "napOffsetInSeconds": {
          "format": "double",
          "type": "number"
        },
        "napStartTimeInSeconds": {
          "format": "int64",
          "type": "integer"
        },
        "napValidation": {
          "type": "string"
        }
      }
    },
    "GarminSleepSummary": {
      "type": "object",
      "properties": {
        "awakeDurationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "deepSleepDurationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "durationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "lightSleepDurationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "napDurationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "napOffsetInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "naps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/GarminNap"
          }
        },
        "napStartTimeInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "remSleepInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "startTimeInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "startTimeOffsetInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "totalNapDurationInSeconds": {
          "format": "int32",
          "type": "integer"
        },
        "unmeasurableSleepInSeconds": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "GoogleCalendarSettings": {
      "type": "object",
      "properties": {
        "calendarIds": {
          "type": "array",
          "description": " The list of Google Calendar IDs whose events are displayed in the Practice Better schedule view. These are the calendars imported from Google to show alongside Practice Better sessions.",
          "items": {
            "type": "string"
          }
        },
        "hideEventDetails": {
          "type": "boolean",
          "description": " When true, Google Calendar events are visible to team members only as \"Free\" or \"Busy\" without event titles or details, protecting the practitioner's calendar privacy."
        },
        "includeClientDetails": {
          "type": "boolean",
          "description": " When true, client names are included in synced Google Calendar event titles and descriptions. When false, events are created without client identifying details."
        },
        "includeSessionBufferTime": {
          "type": "boolean",
          "description": " When true, the buffer time configured around sessions is included when syncing events to Google Calendar, extending the event duration to cover the buffer period."
        },
        "syncAvailability": {
          "type": "boolean",
          "description": " When true, availability windows configured in Practice Better are synced to Google Calendar as free placeholder blocks. Defaults to false."
        },
        "syncCalendarId": {
          "type": "string",
          "description": " The ID of the Google Calendar that Practice Better events are synced to. Sessions, reminders, and other events are written to this calendar."
        },
        "syncGroupSessionPlaceholders": {
          "type": "boolean",
          "description": " When true, unconfirmed group session placeholders are synced to Google Calendar to block time and prevent scheduling conflicts. Defaults to false."
        },
        "syncInternalEvents": {
          "type": "boolean",
          "description": " When true, personal internal events created in Practice Better are synced back to the practitioner's Google Calendar. Defaults to false."
        },
        "syncReminders": {
          "type": "boolean",
          "description": " When true, tasks and reminders created in Practice Better are synced to the practitioner's Google Calendar as events. Defaults to true."
        },
        "syncSessions": {
          "type": "boolean",
          "description": " When true, confirmed sessions are synced to the practitioner's Google Calendar. Session requests are not synced until confirmed. Defaults to true."
        },
        "useGoogleInvites": {
          "type": "boolean",
          "description": " When true, session confirmations and reminders are sent as Google Calendar invites rather than standard Practice Better email notifications."
        }
      },
      "additionalProperties": false
    },
    "HealthcareProvider": {
      "type": "object",
      "required": [
        "firstName",
        "lastName"
      ],
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "emailAddress": {
          "type": "string",
          "description": " The healthcare provider's email address.",
          "maxLength": 100
        },
        "faxNumber": {
          "type": "string",
          "description": " The healthcare provider's fax number. Used when sending fax communications to this provider.",
          "maxLength": 20
        },
        "firstName": {
          "type": "string",
          "description": " The healthcare provider's first name. Required.",
          "maxLength": 50
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the Health Care Provider (only relevant when updating - omit for create)."
        },
        "lastName": {
          "type": "string",
          "description": " The healthcare provider's last name. Required.",
          "maxLength": 50
        },
        "licenseNumber": {
          "type": "string",
          "description": " The provider's license number corresponding to the license type.",
          "maxLength": 100
        },
        "licenseType": {
          "type": "string",
          "description": " The type of license held by the provider (e.g. State License Number, UPIN). US-specific superbill field."
        },
        "mobilePhone": {
          "type": "string",
          "description": " The healthcare provider's mobile phone number.",
          "maxLength": 20
        },
        "npiNumber": {
          "type": "string",
          "description": " The provider's National Provider Identifier (NPI) number. US-specific field used on superbills and insurance claims."
        },
        "occupation": {
          "type": "string",
          "description": " The healthcare provider's occupation or professional role (e.g. Physician, Naturopath, Chiropractor).",
          "maxLength": 100
        },
        "referringProviderType": {
          "type": "string",
          "description": " The role of this provider in relation to the client's care. US-specific superbill field. Values: DN (Referring Provider), DK (Ordering Provider), DQ (Supervising Provider), or Other."
        },
        "title": {
          "type": "string",
          "description": " The healthcare provider's professional title or honorific (e.g. Dr, MD, ND).",
          "maxLength": 50
        },
        "workPhone": {
          "type": "string",
          "description": " The healthcare provider's work phone number.",
          "maxLength": 20
        }
      },
      "additionalProperties": false
    },
    "HealthCondition": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        }
      }
    },
    "HealthInsuranceCode": {
      "required": [
        "codeType",
        "code",
        "description"
      ],
      "type": "object",
      "properties": {
        "code": {
          "description": " Diagnosis code",
          "type": "string"
        },
        "codeType": {
          "description": " Type of diagnosis code. One of `icd9` `icd10` `cpt`",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "description": " The unique identifier of the diagnosis code (only relevant when referencing custom code). [Learn More](https://help.practicebetter.io/hc/en-us/articles/5156446038299-Working-with-Diagnosis-Codes)",
          "type": "string"
        },
        "modifier": {
          "type": "string"
        },
        "unitCharge": {
          "$ref": "#/definitions/Money"
        }
      }
    },
    "HealthInsurancePayer": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "claimsUrl": {
          "type": "string",
          "maxLength": 1000
        },
        "externalId": {
          "type": "string",
          "maxLength": 100
        },
        "faxNumber": {
          "type": "string",
          "maxLength": 20
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the Payer (only relevant when updating - omit for create)."
        },
        "name": {
          "type": "string",
          "maxLength": 100
        },
        "phoneNumber": {
          "type": "string",
          "maxLength": 20
        }
      },
      "additionalProperties": false
    },
    "HealthInsurancePolicy": {
      "type": "object",
      "properties": {
        "address": {
          "$ref": "#/definitions/Address"
        },
        "changeRequestInstanceChanged": {
          "type": "boolean",
          "description": " This field is used to indicate that a client has updated their profile and initiated a change request. Meaning their profile is\r\nnot necessarily in sync with the company's version of the profile. This field should not be modified if executing an update, and should be ignored\r\nwhen creating a client record."
        },
        "coPayment": {
          "type": "number",
          "format": "double"
        },
        "coverageType": {
          "type": "string",
          "description": " One of `medicare` `medicaid` `tricare` `champva` `group` `fecablklung` `other`"
        },
        "dayOfBirth": {
          "$ref": "#/definitions/Date"
        },
        "deductible": {
          "type": "number",
          "format": "double"
        },
        "externalInsurancePlan": {
          "$ref": "#/definitions/ExternalInsurancePlan"
        },
        "firstName": {
          "type": "string",
          "maxLength": 50
        },
        "genderIdentity": {
          "type": "string",
          "description": " E.g. `Man/Boy` `Woman/Girl` `Non-binary` `Transgender` `Agender` `Fluid` `Queer` `Prefer not to say`."
        },
        "groupId": {
          "type": "string",
          "maxLength": 100
        },
        "holderType": {
          "type": "string",
          "description": " One of `self` `spouse` `parent` `other`"
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the Health Insurance Policy (only relevant when updating - omit for create)."
        },
        "lastName": {
          "type": "string",
          "maxLength": 50
        },
        "memberId": {
          "type": "string",
          "maxLength": 100
        },
        "payer": {
          "$ref": "#/definitions/HealthInsurancePayer"
        },
        "phoneNumber": {
          "type": "string",
          "maxLength": 20
        },
        "planId": {
          "type": "string",
          "maxLength": 100
        },
        "planType": {
          "type": "string"
        },
        "region": {
          "type": "string",
          "description": " One of `us`"
        }
      },
      "additionalProperties": false
    },
    "IAnswer": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        }
      }
    },
    "IClientSessionNotesContent": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "IDosage": {
      "type": "object",
      "properties": {}
    },
    "IDosageDuration": {
      "type": "object",
      "properties": {}
    },
    "IDose": {
      "type": "object",
      "properties": {}
    },
    "Image": {
      "type": "object",
      "properties": {
        "contentType": {
          "type": "string",
          "description": " The MIME type of the file (e.g. `application/pdf` `image/jpeg` `video/mp4`)."
        },
        "dateCreated": {
          "type": "string",
          "description": " UTC timestamp when this media item was uploaded.",
          "format": "date-time"
        },
        "dateModified": {
          "type": "string",
          "description": " UTC timestamp when this media item was last modified.",
          "format": "date-time"
        },
        "fileSize": {
          "type": "integer",
          "description": " The size of the file in bytes.",
          "format": "int64"
        },
        "id": {
          "type": "string",
          "description": " The unique identifier for this media item."
        },
        "name": {
          "type": "string",
          "description": " The file name of the media item, including the file extension (e.g. `intake-form.pdf`).",
          "maxLength": 200
        }
      },
      "additionalProperties": false
    },
    "ImperialMeasurementSettings": {
      "type": "object",
      "properties": {
        "useFeet": {
          "type": "boolean",
          "description": " When true, height measurements in client journals are displayed in feet and inches rather than inches only."
        },
        "useOunces": {
          "type": "boolean",
          "description": " When true, weight measurements in client journals are displayed in ounces (oz) in addition to pounds."
        }
      },
      "additionalProperties": false
    },
    "InsuranceClaimDataPoint": {
      "type": "object",
      "properties": {
        "carrier": {
          "$ref": "#/definitions/HealthInsurancePayer"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsuranceCode"
          }
        },
        "firstDateOfService": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "serviceDetails": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cms1500FormServiceDetails"
          }
        },
        "submissionStatus": {
          "type": "string"
        },
        "totalCharge": {
          "$ref": "#/definitions/Money"
        },
        "totalPaid": {
          "$ref": "#/definitions/Money"
        }
      }
    },
    "InsuranceClaimsReport": {
      "type": "object",
      "properties": {
        "claims": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/InsuranceClaimDataPoint"
          }
        },
        "comparisonPeriod": {
          "$ref": "#/definitions/InsuranceClaimsReport"
        },
        "dateFormat": {
          "type": "string"
        },
        "filterablePayers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsurancePayer"
          }
        },
        "period": {
          "$ref": "#/definitions/DateRange"
        },
        "timeZone": {
          "type": "string"
        },
        "totalAmountClaimed": {
          "$ref": "#/definitions/Money"
        },
        "totalAmountPaid": {
          "$ref": "#/definitions/Money"
        },
        "totalClientsWithClaims": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "InsuranceClaimsRequestFragment": {
      "required": [
        "period"
      ],
      "type": "object",
      "properties": {
        "comparisonPeriod": {
          "$ref": "#/definitions/DateRange",
          "description": " An optional time period for comparison with the requested period."
        },
        "consultantIds": {
          "description": " The IDs of the consultants whose payments should be retrieved.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "grouping": {
          "description": " The grouping level of the transaction data. Possible values are `month` `week` `day`.",
          "type": "string"
        },
        "period": {
          "$ref": "#/definitions/DateRange",
          "description": " The time period for which transaction data is requested."
        },
        "tagIds": {
          "description": " Filter the report based on payments from client records with these tags.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "InvoicePaymentOptions": {
      "required": [
        "fullPaymentRequired"
      ],
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "fullPaymentRequired": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "isSubscription": {
          "type": "boolean"
        },
        "minimumPaymentAmount": {
          "$ref": "#/definitions/Money"
        },
        "minimumPaymentPercentage": {
          "format": "double",
          "type": "number"
        },
        "name": {
          "type": "string"
        },
        "recurrenceOptions": {
          "$ref": "#/definitions/RecurrenceOptions"
        },
        "recurringCharge": {
          "$ref": "#/definitions/Money"
        },
        "startTime": {
          "type": "string"
        },
        "storeBillingInformation": {
          "type": "boolean"
        }
      }
    },
    "IPaymentDataPoint": {
      "type": "object",
      "properties": {
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "credit": {
          "type": "boolean",
          "readOnly": true
        },
        "id": {
          "type": "string"
        },
        "invoiceNumber": {
          "type": "string"
        },
        "payment": {
          "$ref": "#/definitions/ConsultantInvoicePayment"
        },
        "total": {
          "$ref": "#/definitions/Money"
        },
        "transactionDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "IStimulus": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "ISupplement": {
      "type": "object",
      "properties": {}
    },
    "JournalDaySummary": {
      "type": "object",
      "properties": {
        "activityEntries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ActivityEntry"
          }
        },
        "appleHealthKitLifestyleEntry": {
          "$ref": "#/definitions/AppleHealthKitLifestyleEntry"
        },
        "appleHealthKitNutritionEntry": {
          "$ref": "#/definitions/AppleHealthKitNutritionEntry"
        },
        "bowelMovementEntries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BowelMovementEntry"
          }
        },
        "cronometerDiaryFoodEntry": {
          "$ref": "#/definitions/CronometerDiaryFoodEntry"
        },
        "cronometerDiaryMetricEntry": {
          "$ref": "#/definitions/CronometerDiaryMetricEntry"
        },
        "fitbitEntry": {
          "$ref": "#/definitions/FitbitEntry"
        },
        "foodIntakeSummary": {
          "$ref": "#/definitions/FoodIntakeSummaryEntry"
        },
        "garminEntry": {
          "$ref": "#/definitions/GarminEntry"
        },
        "hasFoodIntakeEntries": {
          "type": "boolean",
          "readOnly": true
        },
        "mealTimeSummaries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MealTimeSummary"
          }
        },
        "moodEntries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MoodEntry"
          }
        },
        "noteEntries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/NoteEntry"
          }
        },
        "nutrientSnapshot": {
          "$ref": "#/definitions/NutrientAmountCollection"
        },
        "ouraringEntry": {
          "$ref": "#/definitions/OuraringEntry"
        },
        "reviewableEntries": {
          "format": "int32",
          "type": "integer",
          "readOnly": true
        },
        "sleepEntry": {
          "$ref": "#/definitions/SleepEntry"
        },
        "totalClientEntries": {
          "format": "int32",
          "type": "integer"
        },
        "totalComments": {
          "format": "int32",
          "type": "integer",
          "readOnly": true
        },
        "totalEntries": {
          "format": "int32",
          "type": "integer",
          "readOnly": true
        },
        "waterIntake": {
          "$ref": "#/definitions/WaterIntakeEntry"
        },
        "weightChange": {
          "$ref": "#/definitions/WeightChangeEntry"
        }
      }
    },
    "JournalEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "JournalEntryComment": {
      "type": "object",
      "properties": {
        "category": {
          "type": "string"
        },
        "comment": {
          "type": "string"
        },
        "creator": {
          "$ref": "#/definitions/User"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "entryId": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "mealTime": {
          "type": "string"
        }
      }
    },
    "JournalEntryImportSettings": {
      "type": "object",
      "properties": {
        "importMeasurements": {
          "type": "boolean",
          "description": " When true, measurement journal entries are automatically imported into the client file. When null, defaults to true."
        }
      },
      "additionalProperties": false
    },
    "JournalEntryReview": {
      "type": "object",
      "properties": {
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        }
      }
    },
    "LabRequestBase": {
      "type": "object",
      "properties": {
        "artifacts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MediaItem"
          }
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dateOrdered": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "notesHistory": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LabRequestNotes"
          }
        },
        "publishStatus": {
          "type": "string"
        },
        "requestStatus": {
          "type": "string"
        }
      }
    },
    "LabRequestNotes": {
      "type": "object",
      "properties": {
        "consultant": {
          "$ref": "#/definitions/Consultant"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "publishStatus": {
          "type": "string"
        }
      }
    },
    "LifestyleJournalCreateRequest": {
      "type": "object",
      "properties": {
        "hideActivity": {
          "type": "boolean",
          "description": " When true, the Activity tab is hidden from the client in this journal. When null, defaults to false (activity tracking is shown)."
        },
        "hideActivityCalories": {
          "type": "boolean",
          "description": " When true, the calorie burn display within the Activity tab is hidden from the client. When null, defaults to false (activity calories are shown)."
        },
        "hideBowelMovements": {
          "type": "boolean",
          "description": " When true, the Bowel Movements tab is hidden from the client in this journal. When null, defaults to false (bowel movements are shown)."
        },
        "hideMeasurements": {
          "type": "boolean",
          "description": " When true, the Measurements tab is hidden from the client in this journal. When null, defaults to false (measurements are shown)."
        },
        "hideMood": {
          "type": "boolean",
          "description": " When true, the Mood tracking tab is hidden from the client in this journal. When null, defaults to false (mood tracking is shown)."
        },
        "hideSleep": {
          "type": "boolean",
          "description": " When true, the Sleep tab is hidden from the client in this journal. When null, defaults to false (sleep tracking is shown)."
        },
        "importSettings": {
          "$ref": "#/definitions/JournalEntryImportSettings"
        },
        "notes": {
          "type": "string",
          "description": " An optional introductory note or instruction displayed to the client alongside this journal. Maximum 2000 characters.",
          "maxLength": 2000
        }
      },
      "additionalProperties": false
    },
    "LifestyleRecommendation": {
      "type": "object",
      "properties": {
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "featuredRank": {
          "format": "int32",
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "recommendationType": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      }
    },
    "MagneticBookingSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": " When true, smart (magnetic) scheduling is enabled, which recommends availability times close to other events to minimize gaps."
        },
        "includeExternalEvents": {
          "type": "boolean",
          "description": " When true, external calendar events are considered when clustering sessions, so the smart scheduler avoids leaving gaps around external busy blocks."
        },
        "includeInternalEvents": {
          "type": "boolean",
          "description": " When true, internal events created in Practice Better are considered when clustering sessions under smart scheduling."
        },
        "maximumPreferredGap": {
          "type": "integer",
          "description": " The maximum gap in minutes that the smart scheduler considers acceptable between sessions. Gaps larger than this threshold are avoided when presenting available time slots to clients. Must be one of: `0` `5` `10` `15` `20` `25` `30`.",
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "ManagedBillingSettings": {
      "type": "object",
      "properties": {
        "billingMode": {
          "type": "string"
        },
        "companyHeader": {
          "type": "string"
        },
        "notificationMode": {
          "type": "string"
        }
      }
    },
    "MealTimeMoodSummary": {
      "type": "object",
      "properties": {
        "hungerLevelAfter": {
          "format": "int32",
          "type": "integer"
        },
        "hungerLevelBefore": {
          "format": "int32",
          "type": "integer"
        },
        "location": {
          "type": "string"
        },
        "moodAfter": {
          "type": "string"
        },
        "moodBefore": {
          "type": "string"
        }
      }
    },
    "MealTimeSummary": {
      "type": "object",
      "properties": {
        "entries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntry"
          }
        },
        "isEmpty": {
          "type": "boolean",
          "readOnly": true
        },
        "mealTime": {
          "type": "string"
        },
        "nutrientSnapshot": {
          "$ref": "#/definitions/NutrientAmountCollection"
        }
      }
    },
    "MeasurableDose": {
      "type": "object",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "MediaItem": {
      "type": "object",
      "properties": {
        "contentType": {
          "description": " The MIME type of the file (e.g. `application/pdf` `image/jpeg` `video/mp4`).",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "description": " UTC timestamp when this media item was uploaded.",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "description": " UTC timestamp when this media item was last modified.",
          "type": "string"
        },
        "fileSize": {
          "format": "int64",
          "description": " The size of the file in bytes.",
          "type": "integer"
        },
        "id": {
          "description": " The unique identifier for this media item.",
          "type": "string"
        },
        "name": {
          "description": " The file name of the media item, including the file extension (e.g. `intake-form.pdf`).",
          "type": "string"
        }
      }
    },
    "ModuleContentResponse": {
      "type": "object",
      "properties": {
        "html": {
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      }
    },
    "Money": {
      "type": "object",
      "properties": {
        "amount": {
          "format": "int64",
          "description": " The amount in cents.",
          "type": "integer"
        },
        "currency": {
          "description": " The currency of the amount.",
          "type": "string"
        }
      }
    },
    "MoodEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "mood": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "stimuli": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IStimulus"
          }
        },
        "symptoms": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthCondition"
          }
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "NaturalDispensaryAccountSettings": {
      "type": "object",
      "properties": {
        "createClientShoppingCart": {
          "type": "boolean",
          "description": " When true, new protocols default to having the send-cart-to-client option enabled, so that publishing the protocol sends the client a practitioner-linked Natural Dispensary shopping cart with an optional promotional discount."
        },
        "defaultPromoCode": {
          "type": "string",
          "description": " The default promo code applied when creating a new protocol. Null if no default code is configured."
        },
        "practitionerId": {
          "type": "string",
          "description": " The email address associated with the linked Natural Dispensary account. Null if not connected."
        }
      },
      "additionalProperties": false
    },
    "NaturalDispensaryCartDescriptor": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string"
        }
      }
    },
    "NoShowFeeSettings": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": " When true, a no-show fee is charged to clients who miss sessions without cancelling."
        },
        "type": {
          "type": "string",
          "description": " The fee calculation method. Possible values: `fixed-fee` (flat amount), `percentage` (percentage of the session fee)."
        },
        "value": {
          "type": "integer",
          "description": " The no-show fee amount. When `type` is `fixed-fee`, this is the fee in the smallest currency unit (e.g. cents). When `type` is `percentage`, this is an integer between `0` and `100` representing the percentage of the session fee.",
          "format": "int64"
        }
      },
      "additionalProperties": false
    },
    "NoteEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "mediaItem": {
          "$ref": "#/definitions/MediaItem"
        },
        "note": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "NotificationSnoozePeriod": {
      "type": "object",
      "required": [
        "duration",
        "startTime"
      ],
      "properties": {
        "duration": {
          "type": "integer",
          "description": " The length of the snooze or auto-responder period in minutes (e.g. 900 for a 15-hour overnight period from 5 PM to 8 AM).",
          "format": "int32"
        },
        "startTime": {
          "type": "string",
          "description": " The time of day at which the snooze or auto-responder period starts, expressed in the practitioner's account timezone.",
          "format": "date-span"
        },
        "weekdays": {
          "type": "array",
          "description": " The days of the week on which this snooze or auto-responder period is active. Possible values are `sunday` `monday` `tuesday` `wednesday` `thursday` `friday` `saturday`.",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "NotificationSnoozeSettings": {
      "type": "object",
      "properties": {
        "autoResponder": {
          "type": "string",
          "description": " The auto-responder message sent to clients who message the practitioner during a snooze period. Maximum 500 characters. Null if no auto-responder message is configured.",
          "maxLength": 500
        },
        "enableOverride": {
          "type": "boolean",
          "description": " When true, a message sender can override the practitioner's snooze settings to force a notification to be delivered. Only effective when a chat auto-responder is configured."
        },
        "periods": {
          "type": "array",
          "description": " The list of scheduled time periods during which message notifications are snoozed and the auto-responder is active.",
          "items": {
            "$ref": "#/definitions/NotificationSnoozePeriod"
          }
        }
      },
      "additionalProperties": false
    },
    "Nutrient": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "isMacronutrient": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "rank": {
          "format": "int32",
          "type": "integer"
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "NutrientAmount": {
      "required": [
        "nutrient"
      ],
      "type": "object",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "nutrient": {
          "$ref": "#/definitions/Nutrient"
        }
      }
    },
    "NutrientAmountCollection": {
      "type": "object",
      "properties": {
        "calories": {
          "$ref": "#/definitions/NutrientAmount",
          "readOnly": true
        },
        "carbohydrates": {
          "$ref": "#/definitions/NutrientAmount",
          "readOnly": true
        },
        "fats": {
          "$ref": "#/definitions/NutrientAmount",
          "readOnly": true
        },
        "isEmpty": {
          "type": "boolean",
          "readOnly": true
        },
        "nutrientAmounts": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/definitions/NutrientAmount"
          }
        },
        "protein": {
          "$ref": "#/definitions/NutrientAmount",
          "readOnly": true
        }
      }
    },
    "OAuthTokenRequest": {
      "required": [
        "client_id",
        "client_secret"
      ],
      "type": "object",
      "properties": {
        "client_id": {
          "type": "string"
        },
        "client_secret": {
          "type": "string"
        }
      }
    },
    "OAuthTokenResponse": {
      "type": "object",
      "properties": {
        "access_token": {
          "type": "string"
        },
        "expires_in": {
          "format": "int64",
          "type": "integer"
        },
        "token_type": {
          "type": "string"
        }
      }
    },
    "OfficeLocation": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        },
        "clientBookingEnabled": {
          "type": "boolean"
        },
        "cmsPlaceOfService": {
          "$ref": "#/definitions/CmsPlaceOfServiceCode"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "emailAddress": {
          "type": "string"
        },
        "faxNumber": {
          "type": "string"
        },
        "flexible": {
          "type": "boolean"
        },
        "fullAddress": {
          "$ref": "#/definitions/Address"
        },
        "id": {
          "type": "string"
        },
        "isDefault": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "npiNumber": {
          "type": "string"
        },
        "otherId": {
          "type": "string"
        },
        "otherIdQualifier": {
          "type": "string"
        },
        "phoneNumber": {
          "type": "string"
        },
        "room": {
          "type": "string"
        },
        "suggested": {
          "type": "boolean"
        },
        "website": {
          "type": "string"
        }
      }
    },
    "OuraringEntry": {
      "type": "object",
      "properties": {
        "activeCalories": {
          "format": "int32",
          "type": "integer"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "distance": {
          "format": "double",
          "type": "number"
        },
        "duration": {
          "format": "int32",
          "type": "integer"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "floors": {
          "format": "int32",
          "type": "integer"
        },
        "hasActivity": {
          "type": "boolean"
        },
        "hasSleep": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "naps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OuraringSleep"
          }
        },
        "nightlySleep": {
          "$ref": "#/definitions/OuraringSleep"
        },
        "restingHeartRate": {
          "format": "int32",
          "type": "integer"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "steps": {
          "format": "int32",
          "type": "integer"
        },
        "timeZone": {
          "type": "string"
        },
        "totalCalories": {
          "format": "int32",
          "type": "integer"
        },
        "workouts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OuraringWorkout"
          }
        }
      }
    },
    "OuraringSleep": {
      "type": "object",
      "properties": {
        "awakeTime": {
          "format": "int32",
          "type": "integer"
        },
        "bedtimeEnd": {
          "format": "date-time",
          "type": "string"
        },
        "bedtimeStart": {
          "format": "date-time",
          "type": "string"
        },
        "day": {
          "type": "string"
        },
        "deepSleepDuration": {
          "format": "int32",
          "type": "integer"
        },
        "efficiency": {
          "format": "double",
          "type": "number"
        },
        "latency": {
          "format": "int32",
          "type": "integer"
        },
        "lightSleepDuration": {
          "format": "int32",
          "type": "integer"
        },
        "remSleepDuration": {
          "format": "int32",
          "type": "integer"
        },
        "restlessPeriods": {
          "format": "int32",
          "type": "integer"
        },
        "sleepTimeEnd": {
          "format": "date-time",
          "type": "string"
        },
        "sleepTimeStart": {
          "format": "date-time",
          "type": "string"
        },
        "timeInBed": {
          "format": "int32",
          "type": "integer"
        },
        "totalSleepDuration": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "OuraringWorkout": {
      "type": "object",
      "properties": {
        "calories": {
          "format": "int32",
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "distance": {
          "format": "double",
          "type": "number"
        },
        "duration": {
          "format": "int32",
          "type": "integer"
        },
        "endTime": {
          "format": "date-time",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "startTime": {
          "format": "date-time",
          "type": "string"
        },
        "steps": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "OutOfOfficePeriod": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": " An optional courtesy message displayed as a banner in the client portal during the out-of-office period (e.g. emergency contact information or return date). Maximum 140 characters. Null if no message is configured.",
          "maxLength": 140
        },
        "period": {
          "$ref": "#/definitions/DateTimeRange"
        },
        "timeZone": {
          "type": "string",
          "description": " The time zone using Windows Standard time zone names (e.g. \"Eastern Standard Time\") used to interpret the start and end times of the out-of-office period."
        }
      },
      "additionalProperties": false
    },
    "OutOfOfficeSettings": {
      "type": "object",
      "properties": {
        "disabled": {
          "type": "boolean",
          "description": " When true, all configured out-of-office periods are disabled and the practitioner's booking page is not restricted by any out-of-office dates."
        },
        "hasEnabledPeriods": {
          "type": "boolean",
          "description": " When true, out-of-office is active — the global disable flag is not set and at least one period has been configured.",
          "readOnly": true
        },
        "periods": {
          "type": "array",
          "description": " The list of out-of-office periods. Up to 5 periods can be configured. During each period, the practitioner's booking page is disabled and an optional message is shown to clients.",
          "items": {
            "$ref": "#/definitions/OutOfOfficePeriod"
          }
        }
      },
      "additionalProperties": false
    },
    "Palette": {
      "type": "object",
      "properties": {
        "accent": {
          "type": "integer",
          "description": " The accent colour as a 24-bit RGB integer, used for highlights and call-to-action elements on the practice's client-facing surfaces.",
          "format": "int32"
        },
        "primary": {
          "type": "integer",
          "description": " The primary brand colour as a 24-bit RGB integer (e.g. `3318627` = `#32A363`).",
          "format": "int32"
        },
        "textPrimary": {
          "type": "integer",
          "description": " The primary text colour as a 24-bit RGB integer, used for body text rendered on the practice's branded surfaces such as emails and the client portal.",
          "format": "int32"
        }
      },
      "additionalProperties": false
    },
    "PaymentDataPoint": {
      "type": "object",
      "properties": {
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "credit": {
          "type": "boolean",
          "readOnly": true
        },
        "id": {
          "type": "string"
        },
        "invoiceNumber": {
          "type": "string"
        },
        "payment": {
          "$ref": "#/definitions/ConsultantInvoicePayment"
        },
        "total": {
          "$ref": "#/definitions/Money"
        },
        "transactionDate": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "PaymentHistoryReport": {
      "type": "object",
      "properties": {
        "amountRefunded": {
          "$ref": "#/definitions/Money"
        },
        "comparisonPeriod": {
          "$ref": "#/definitions/PaymentHistoryReport"
        },
        "grossAmount": {
          "$ref": "#/definitions/Money"
        },
        "payments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/PaymentDataPoint"
          }
        },
        "period": {
          "$ref": "#/definitions/DateTimeRange"
        },
        "totalClientsBilled": {
          "format": "int32",
          "type": "integer"
        },
        "totalPayments": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "PaymentMethod": {
      "type": "object",
      "properties": {
        "accountHolderName": {
          "type": "string"
        },
        "address": {
          "$ref": "#/definitions/Address"
        },
        "familyType": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isActive": {
          "type": "boolean"
        },
        "isDefault": {
          "type": "boolean"
        },
        "isDelayed": {
          "type": "boolean"
        },
        "last4Digits": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "PaymentSummaryRequestFragment": {
      "required": [
        "period",
        "currency"
      ],
      "type": "object",
      "properties": {
        "comparisonPeriod": {
          "$ref": "#/definitions/DateTimeRange",
          "description": " An optional time period for comparison with the requested period."
        },
        "consultantIds": {
          "description": " The IDs of the consultants whose payments should be retrieved.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "currency": {
          "description": "\r\nThe currency code of the transaction data: `cad` `usd` ...",
          "type": "string"
        },
        "grouping": {
          "description": " The grouping level of the transaction data. Possible values are `month` `week` `day`.",
          "type": "string"
        },
        "period": {
          "$ref": "#/definitions/DateTimeRange",
          "description": " The time period for which transaction data is requested."
        },
        "tagIds": {
          "description": " Filter the report based on payments from client records with these tags.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "PdfHeaderFooterTemplate": {
      "type": "object",
      "properties": {
        "displayHeaderOnFirstPage": {
          "type": "boolean",
          "description": " When true, the header is also displayed on the first page of the PDF. When false or null, the header appears on subsequent pages only."
        },
        "headerLeftTemplate": {
          "type": "string",
          "description": " The custom text displayed in the left side of the PDF header. Supports template tokens for dynamic content. Maximum 150 characters. Null if not customized.",
          "maxLength": 150
        },
        "headerRightTemplate": {
          "type": "string",
          "description": " The custom text displayed in the right side of the PDF header. Supports template tokens for dynamic content. Maximum 150 characters. Null if not customized.",
          "maxLength": 150
        }
      },
      "additionalProperties": false
    },
    "ProfessionalDesignation": {
      "type": "object",
      "required": [
        "profession"
      ],
      "properties": {
        "accreditation": {
          "type": "string",
          "description": " The designation letters or acronym displayed after the consultant's name (e.g. `RD` `CDE`). Null if not specified.",
          "maxLength": 100
        },
        "governingBody": {
          "type": "string",
          "description": " The name of the regulatory or certifying body that issued this designation (e.g. \"College of Dietitians of Ontario\"). Null if not specified.",
          "maxLength": 100
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of this professional designation record."
        },
        "profession": {
          "type": "string",
          "description": " The professional category selected for this designation. Possible values: `ayurvedicpractitioner` `bodyworker` `chiropractor` `clinicalmentalhealthcounselor` `clinicalsocialworker` `dietitian` `easternmedicine` `functionalmedicine` `healthcoach` `herbalist` `holisticnutritionconsultant` `homeopath` `lactationconsultant` `medicaldoctor` `medicalherbalist` `mentalhealth` `naturopath` `naturopathicdoctor` `nurse` `nursepractitioner` `nutritionist` `trainer` `pharmacist` `physicianassistant` `physicaltherapist` `psychiatricnursepractitioner` `psychiatrist` `psychologist` `wellnesspro` `other`. Required."
        },
        "registrationDate": {
          "type": "string",
          "description": " The date on which this designation was first obtained. Null if not specified.",
          "format": "date-time"
        },
        "registrationId": {
          "type": "string",
          "description": " The consultant's registration or licence number with the governing body. Null if not specified.",
          "maxLength": 100
        },
        "renewalDate": {
          "type": "string",
          "description": " The date on which this designation is due to expire or be renewed. Null if not specified.",
          "format": "date-time"
        }
      },
      "additionalProperties": false
    },
    "ProfessionalService": {
      "type": "object",
      "properties": {
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "isGroupService": {
          "type": "boolean"
        },
        "name": {
          "type": "string"
        },
        "serviceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sku": {
          "type": "string"
        }
      }
    },
    "ProfessionalServiceProcedureCode": {
      "required": [
        "codeType",
        "code",
        "description"
      ],
      "type": "object",
      "properties": {
        "code": {
          "description": " Diagnosis code",
          "type": "string"
        },
        "codeType": {
          "description": " Type of diagnosis code. One of `icd9` `icd10` `cpt`",
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "description": " The unique identifier of the diagnosis code (only relevant when referencing custom code). [Learn More](https://help.practicebetter.io/hc/en-us/articles/5156446038299-Working-with-Diagnosis-Codes)",
          "type": "string"
        },
        "modifier": {
          "type": "string"
        },
        "unitCharge": {
          "$ref": "#/definitions/Money"
        },
        "units": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "Protocol": {
      "type": "object",
      "properties": {
        "artifacts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MediaItem"
          }
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "content": {
          "$ref": "#/definitions/RichTextContent"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "disclaimer": {
          "$ref": "#/definitions/Disclaimer"
        },
        "duration": {
          "$ref": "#/definitions/IDosageDuration"
        },
        "focus": {
          "type": "string"
        },
        "foodRecommendations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/FoodRecommendation"
          }
        },
        "fullscriptTreatmentPlan": {
          "$ref": "#/definitions/FullscriptTreatmentPlanDescriptor"
        },
        "fullscriptTreatmentPlanCreationFailed": {
          "type": "boolean"
        },
        "hasFailedDispensaryRecommendations": {
          "type": "boolean"
        },
        "id": {
          "type": "string"
        },
        "isArchived": {
          "type": "boolean",
          "readOnly": true
        },
        "lifestyleRecommendations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LifestyleRecommendation"
          }
        },
        "name": {
          "type": "string"
        },
        "naturalDispensaryCart": {
          "$ref": "#/definitions/NaturalDispensaryCartDescriptor"
        },
        "naturalDispensaryCartCreationFailed": {
          "type": "boolean"
        },
        "publishStatus": {
          "type": "string"
        },
        "revision": {
          "format": "int32",
          "type": "integer"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        },
        "supplementRecommendations": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SupplementRecommendation"
          }
        },
        "thatCleanLifeEmbedError": {
          "$ref": "#/definitions/ExternalApiError"
        },
        "thatCleanLifeEmbeds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ThatCleanLifeNutritionEmbed"
          }
        },
        "thatCleanLifeNutritionPlans": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ThatCleanLifeNutritionPlan"
          }
        },
        "wellevateRecommendation": {
          "$ref": "#/definitions/WellevateRecommendationDescriptor"
        },
        "wholescriptsRecommendation": {
          "$ref": "#/definitions/WholescriptsRecommendationDescriptor"
        },
        "wholescriptsRecommendationCreationFailed": {
          "type": "boolean"
        }
      }
    },
    "QuizResults": {
      "type": "object",
      "properties": {
        "correctAnswerCount": {
          "format": "int32",
          "type": "integer"
        },
        "formDispatchId": {
          "type": "string"
        },
        "formId": {
          "type": "string"
        },
        "questionCount": {
          "format": "int32",
          "type": "integer"
        },
        "score": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "RecurrenceOptions": {
      "type": "object",
      "properties": {
        "consultantExcludeDates": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "format": "date-time",
              "type": "string"
            }
          }
        },
        "count": {
          "format": "int32",
          "type": "integer"
        },
        "endAfter": {
          "$ref": "#/definitions/Duration"
        },
        "endDate": {
          "format": "date-time",
          "type": "string"
        },
        "endDay": {
          "$ref": "#/definitions/Date"
        },
        "excludeDates": {
          "type": "array",
          "items": {
            "format": "date-time",
            "type": "string"
          }
        },
        "leadTime": {
          "format": "int32",
          "type": "integer"
        },
        "recurrenceRule": {
          "type": "string"
        },
        "startAfter": {
          "$ref": "#/definitions/Duration"
        },
        "startDate": {
          "format": "date-time",
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "Reminder": {
      "type": "object",
      "properties": {
        "allDay": {
          "type": "boolean"
        },
        "attachments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MediaItem"
          }
        },
        "clientNotes": {
          "type": "string"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "completed": {
          "type": "boolean",
          "readOnly": true
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "consultantIds": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "consultants": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Stub<Consultant>"
          }
        },
        "dateCompleted": {
          "format": "date-time",
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "dueDate": {
          "format": "date-time",
          "type": "string"
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "id": {
          "type": "string"
        },
        "isRecurring": {
          "type": "boolean",
          "readOnly": true
        },
        "isTeamShared": {
          "type": "boolean"
        },
        "notes": {
          "type": "string"
        },
        "notificationOptions": {
          "$ref": "#/definitions/ReminderNotificationOptions"
        },
        "pastDue": {
          "type": "boolean"
        },
        "priority": {
          "type": "string"
        },
        "reminderType": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      }
    },
    "ReminderDelivery": {
      "type": "object",
      "required": [
        "deliveryStrategy",
        "reminderPeriod"
      ],
      "properties": {
        "deliveryStrategy": {
          "type": "string",
          "description": " The delivery channel for this reminder. Possible values: `email` (email only), `sms` (SMS only), `sms_email` (SMS and email), `sms_email_fallback` (SMS with email fallback if SMS is unavailable)."
        },
        "reminderPeriod": {
          "type": "integer",
          "description": " The timing of this reminder relative to the session, in hours. Positive values send the reminder before the session; negative values send it after the session ends. Must be one of: `1` (1 hr before) `2` (2 hr before) `3` (3 hr before) `4` (4 hr before) `5` (5 hr before) `6` (6 hr before) `24` (1 day before) `48` (2 days before) `72` (3 days before) `96` (4 days before) `168` (1 week before) `336` (2 weeks before) `-1` (1 hr after) `-2` (2 hr after) `-3` (3 hr after) `-4` (4 hr after) `-5` (5 hr after) `-6` (6 hr after) `-24` (1 day after) `-48` (2 days after) `-72` (3 days after) `-96` (4 days after) `-168` (1 week after) `-336` (2 weeks after) `-672` (4 weeks after) `-1344` (8 weeks after).",
          "format": "int32"
        },
        "sendConsultantReminder": {
          "type": "boolean",
          "description": " When true, the practitioner also receives a reminder notification at the configured time in addition to the client."
        }
      },
      "additionalProperties": false
    },
    "ReminderNotificationOptions": {
      "required": [
        "date"
      ],
      "type": "object",
      "properties": {
        "date": {
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "ReminderSettings": {
      "type": "object",
      "properties": {
        "deliveries": {
          "type": "array",
          "description": " The list of individual reminder deliveries, each specifying how far in advance the reminder is sent and which delivery channel (email or SMS) is used.",
          "items": {
            "$ref": "#/definitions/ReminderDelivery"
          }
        },
        "disabled": {
          "type": "boolean",
          "description": " When true, all automated session reminders are disabled for this practitioner and no reminder notifications are sent to clients."
        }
      },
      "additionalProperties": false
    },
    "RichTextContent": {
      "type": "object",
      "properties": {
        "artifacts": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MediaItem"
          }
        },
        "htmlContent": {
          "type": "string"
        },
        "id": {
          "type": "string"
        }
      }
    },
    "RupaAccountSettings": {
      "type": "object",
      "properties": {
        "clinicId": {
          "type": "string",
          "description": " The Rupa Health clinic ID that uniquely identifies the linked Rupa clinic. Practitioners on the same Practice Better team may or may not link to the same clinic."
        },
        "practitionerId": {
          "type": "string",
          "description": " The Rupa Health practitioner ID within the linked clinic. A Rupa clinic may have more than one practitioner — Practice Better practitioners on the same team may share a Rupa practitioner or integrate separately."
        }
      },
      "additionalProperties": false
    },
    "SalesTaxReport": {
      "type": "object",
      "properties": {
        "comparisonPeriod": {
          "$ref": "#/definitions/SalesTaxReport"
        },
        "dataPoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TaxDataPoint"
          }
        },
        "invoices": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoice"
          }
        },
        "period": {
          "$ref": "#/definitions/DateTimeRange"
        },
        "taxSummaries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TaxSummaryDataPoint"
          }
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "SalesTaxSummaryRequestFragment": {
      "required": [
        "period",
        "currency"
      ],
      "type": "object",
      "properties": {
        "comparisonPeriod": {
          "$ref": "#/definitions/DateTimeRange",
          "description": " An optional time period for comparison with the requested period."
        },
        "consultantIds": {
          "description": " Consultant Ids for which to retrieve tax data.",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "currency": {
          "description": " Currency code of the tax data : `cad` `usd` ...",
          "type": "string"
        },
        "period": {
          "$ref": "#/definitions/DateTimeRange",
          "description": " The time period for which tax data is requested."
        },
        "tagIds": {
          "description": " Tag Ids for which to retrieve tax data.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "SessionBookingNotes": {
      "type": "object",
      "properties": {
        "confirmationStatus": {
          "type": "string"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "notesType": {
          "type": "string"
        }
      }
    },
    "SessionLimitRule": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": " When true, this session limit rule is active and will be enforced when clients attempt to book sessions."
        },
        "maximumPerDay": {
          "type": "integer",
          "description": " The maximum number of sessions permitted per day under this rule. Must be between `1` and `999`. Null if no daily cap is set.",
          "format": "int32"
        },
        "maximumPerHour": {
          "type": "integer",
          "description": " The maximum number of sessions permitted per hour under this rule. Must be between `1` and `999`. Null if no hourly cap is set.",
          "format": "int32"
        },
        "maximumPerMonth": {
          "type": "integer",
          "description": " The maximum number of sessions permitted per month under this rule. Must be between `1` and `999`. Null if no monthly cap is set.",
          "format": "int32"
        },
        "maximumPerWeek": {
          "type": "integer",
          "description": " The maximum number of sessions permitted per week under this rule. Must be between `1` and `999`. Null if no weekly cap is set.",
          "format": "int32"
        },
        "name": {
          "type": "string",
          "description": " The display name for this session limit rule (max 50 characters). Required.",
          "maxLength": 50
        },
        "serviceIds": {
          "type": "array",
          "description": " The IDs of the service types this rule applies to. Null if the rule applies to all service types.",
          "uniqueItems": true,
          "items": {
            "type": "string"
          }
        },
        "weekdays": {
          "type": "array",
          "description": " The days of the week this rule applies to. Possible values are `monday` `tuesday` `wednesday` `thursday` `friday` `saturday` `sunday`. Null if the rule applies to all days.",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "SessionLimitSettings": {
      "type": "object",
      "properties": {
        "maximumPerDay": {
          "type": "integer",
          "description": " The maximum number of sessions that can be booked per day across all service types. Must be between `1` and `20`. Null if no daily cap is configured.",
          "format": "int32"
        },
        "maximumPerHour": {
          "type": "integer",
          "description": " The maximum number of sessions that can be booked per hour across all service types. Null if no hourly cap is configured.",
          "format": "int32"
        },
        "maximumPerWeek": {
          "type": "integer",
          "description": " The maximum number of sessions that can be booked per week across all service types. Null if no weekly cap is configured.",
          "format": "int32"
        },
        "rules": {
          "type": "array",
          "description": " The list of per-service-type session limit rules. Each rule restricts how many sessions of a specific type a client can book within a window. Null if no rules are configured.",
          "items": {
            "$ref": "#/definitions/SessionLimitRule"
          }
        }
      },
      "additionalProperties": false
    },
    "SessionTelehealthSettings": {
      "type": "object",
      "properties": {
        "launchApplication": {
          "description": " The telehealth session medium: One of `zoom`, `system` (PB telehealth), `other`. Only relevant when systemType is set to `virtual`.",
          "type": "string"
        }
      }
    },
    "SleepEntry": {
      "type": "object",
      "properties": {
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "duration": {
          "format": "double",
          "type": "number"
        },
        "easeOfSleep": {
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "notes": {
          "type": "string"
        },
        "numberOfAwakenings": {
          "format": "int32",
          "type": "integer"
        },
        "qualityOfSleep": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        },
        "totalAwakeTime": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "SocialNetworkSettings": {
      "type": "object",
      "properties": {
        "blogUrl": {
          "type": "string",
          "description": " The URL of the practitioner's blog or personal website, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "facebookUserName": {
          "type": "string",
          "description": " The practitioner's Facebook username or page name, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "instagramUserName": {
          "type": "string",
          "description": " The practitioner's Instagram username, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "linkedInUserName": {
          "type": "string",
          "description": " The practitioner's LinkedIn username or profile URL, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "pinterestUserName": {
          "type": "string",
          "description": " The practitioner's Pinterest username or profile URL, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "skypeUserName": {
          "type": "string",
          "description": " The practitioner's Skype username, used for contact purposes. Maximum 100 characters.",
          "maxLength": 100
        },
        "tikTokUserName": {
          "type": "string",
          "description": " The practitioner's TikTok username, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "twitterUserName": {
          "type": "string",
          "description": " The practitioner's X (formerly Twitter) username, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        },
        "youTubeUserName": {
          "type": "string",
          "description": " The practitioner's YouTube channel name or URL, displayed on their public profile. Maximum 100 characters.",
          "maxLength": 100
        }
      },
      "additionalProperties": false
    },
    "SourceSupplement": {
      "type": "object",
      "properties": {
        "brandId": {
          "type": "string"
        },
        "brandName": {
          "type": "string"
        },
        "externalId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "object": {
          "type": "string"
        }
      }
    },
    "Stub<Consultant>": {
      "type": "object",
      "properties": {
        "company": {
          "$ref": "#/definitions/Company"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "emailAddress": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "isOwner": {
          "type": "boolean"
        },
        "isPractitioner": {
          "type": "boolean"
        },
        "profile": {
          "$ref": "#/definitions/Stub<ConsultantProfile>"
        }
      }
    },
    "Stub<ConsultantProfile>": {
      "type": "object",
      "properties": {
        "defaultCurrency": {
          "type": "string"
        },
        "firstName": {
          "type": "string"
        },
        "lastName": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      }
    },
    "Superbill": {
      "type": "object",
      "properties": {
        "adjustmentAmount": {
          "$ref": "#/definitions/Money"
        },
        "adjustmentDescription": {
          "type": "string"
        },
        "amountDue": {
          "$ref": "#/definitions/Money"
        },
        "amountPaid": {
          "$ref": "#/definitions/Money"
        },
        "billingCountry": {
          "type": "string"
        },
        "clientInformation": {
          "$ref": "#/definitions/SuperbillClientInformation"
        },
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "consultantInformation": {
          "$ref": "#/definitions/SuperbillConsultantInformation"
        },
        "currency": {
          "type": "string"
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateIssued": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthInsuranceCode"
          }
        },
        "id": {
          "type": "string"
        },
        "includeSignature": {
          "type": "boolean"
        },
        "lineItems": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ConsultantInvoiceLineItem"
          }
        },
        "notes": {
          "type": "string"
        },
        "sessionDetails": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SuperbillSessionDetails"
          }
        },
        "subTotal": {
          "$ref": "#/definitions/Money"
        },
        "superbillNumber": {
          "type": "string"
        },
        "total": {
          "$ref": "#/definitions/Money"
        }
      }
    },
    "SuperbillClientInformation": {
      "required": [
        "name"
      ],
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        },
        "dayOfBirth": {
          "$ref": "#/definitions/Date"
        },
        "emailAddress": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "phoneNumber": {
          "type": "string"
        },
        "policy": {
          "$ref": "#/definitions/HealthInsurancePolicy"
        },
        "referringProviderName": {
          "type": "string"
        },
        "referringProviderNpiNumber": {
          "type": "string"
        }
      }
    },
    "SuperbillConsultantInformation": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string"
        },
        "companyHeader": {
          "type": "string"
        },
        "emailAddress": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "npiNumber": {
          "type": "string"
        },
        "organizationNpiNumber": {
          "type": "string"
        },
        "taxNumber": {
          "type": "string"
        },
        "taxNumberType": {
          "type": "string"
        }
      }
    },
    "SuperbillSessionDetails": {
      "required": [
        "sessionDate",
        "units",
        "unitCost"
      ],
      "type": "object",
      "properties": {
        "actualDuration": {
          "format": "int64",
          "type": "integer"
        },
        "description": {
          "type": "string"
        },
        "diagnosisCodes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "duration": {
          "format": "int64",
          "type": "integer"
        },
        "placeOfService": {
          "$ref": "#/definitions/CmsPlaceOfServiceCode"
        },
        "procedureCode": {
          "$ref": "#/definitions/HealthInsuranceCode"
        },
        "procedureCodeModifiers": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "sessionDate": {
          "format": "date-time",
          "type": "string"
        },
        "sessionDay": {
          "$ref": "#/definitions/Date"
        },
        "subTotal": {
          "$ref": "#/definitions/Money"
        },
        "unitCost": {
          "$ref": "#/definitions/Money"
        },
        "units": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "SupplementRecommendation": {
      "type": "object",
      "properties": {
        "conditionsTreated": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HealthCondition"
          }
        },
        "dosages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IDosage"
          }
        },
        "dosageType": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "importOnPublish": {
          "type": "boolean"
        },
        "supplement": {
          "$ref": "#/definitions/ISupplement"
        }
      }
    },
    "Tag": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "TagDescriptor": {
      "type": "object",
      "required": [
        "id"
      ],
      "properties": {
        "dateAdded": {
          "type": "string",
          "format": "date-time"
        },
        "id": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "TagFragment": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 50
        },
        "notes": {
          "type": "string",
          "maxLength": 100
        }
      },
      "additionalProperties": false
    },
    "TagUpdateAction": {
      "type": "object",
      "required": [
        "actionType"
      ],
      "properties": {
        "actionType": {
          "type": "string",
          "description": " Whether to add or remove the list of tagIds. One of `add` or `remove`."
        },
        "tagIds": {
          "type": "array",
          "description": " Array of tag IDs to add or remove from client record.",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "TagUpdateRequestFragment": {
      "type": "object",
      "required": [
        "actions"
      ],
      "properties": {
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TagUpdateAction"
          }
        },
        "id": {
          "type": "string",
          "description": " The unique identifier of the client record (only relevant when [updating a client's tags](/operations/ConsultantRelatedTags_Update))."
        }
      },
      "additionalProperties": false
    },
    "TaxDataPoint": {
      "type": "object",
      "properties": {
        "clientRecord": {
          "$ref": "#/definitions/ClientRecord"
        },
        "consultant": {
          "$ref": "#/definitions/Stub<Consultant>"
        },
        "id": {
          "type": "string"
        },
        "invoiceDate": {
          "format": "date-time",
          "type": "string"
        },
        "invoiceNumber": {
          "type": "string"
        },
        "tax": {
          "$ref": "#/definitions/ConsultantInvoiceTaxItemSummary"
        },
        "taxItem": {
          "$ref": "#/definitions/ConsultantInvoiceLineItemTaxSummary"
        }
      }
    },
    "TaxSummaryDataPoint": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string"
        },
        "percent": {
          "format": "double",
          "type": "number"
        },
        "subtotal": {
          "format": "int64",
          "type": "integer"
        },
        "taxAmount": {
          "format": "int64",
          "type": "integer"
        },
        "totalInvoices": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ThatCleanLifeNutritionEmbed": {
      "type": "object",
      "properties": {
        "accessToken": {
          "type": "string"
        },
        "displayNutritionFacts": {
          "type": "boolean"
        },
        "expires": {
          "format": "date-time",
          "type": "string"
        },
        "externalId": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "recommendationId": {
          "type": "string"
        },
        "refreshToken": {
          "type": "string"
        },
        "url": {
          "type": "string"
        }
      }
    },
    "ThatCleanLifeNutritionEmbedDescriptorFragment": {
      "required": [
        "items"
      ],
      "type": "object",
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ThatCleanLifeNutritionEmbedDescriptorItemFragment"
          }
        }
      }
    },
    "ThatCleanLifeNutritionEmbedDescriptorItemFragment": {
      "required": [
        "id",
        "type"
      ],
      "type": "object",
      "properties": {
        "id": {
          "type": "string"
        },
        "imageUrl": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "nutrients": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ThatCleanLifeNutritionEmbedDescriptorNutrient"
          }
        },
        "totalItems": {
          "format": "int32",
          "type": "integer"
        },
        "type": {
          "type": "string"
        }
      }
    },
    "ThatCleanLifeNutritionEmbedDescriptorNutrient": {
      "type": "object",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "unit": {
          "type": "string"
        }
      }
    },
    "ThatCleanLifeNutritionPlan": {
      "type": "object",
      "properties": {
        "allowEdits": {
          "type": "boolean"
        },
        "allowExports": {
          "type": "boolean"
        },
        "embedDescriptors": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ThatCleanLifeNutritionEmbedDescriptorFragment"
          }
        },
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      }
    },
    "Theme": {
      "type": "object",
      "properties": {
        "palette": {
          "$ref": "#/definitions/Palette"
        }
      },
      "additionalProperties": false
    },
    "TimeOfDayFrequency": {
      "type": "object",
      "properties": {
        "afterDinner": {
          "type": "boolean"
        },
        "beforeBed": {
          "type": "boolean"
        },
        "beforeBedQuantity": {
          "format": "double",
          "type": "number"
        },
        "daily": {
          "type": "boolean"
        },
        "dailyQuantity": {
          "format": "double",
          "type": "number"
        },
        "duringAm": {
          "type": "boolean"
        },
        "duringAmQuantity": {
          "format": "double",
          "type": "number"
        },
        "duringPm": {
          "type": "boolean"
        },
        "duringPmQuantity": {
          "format": "double",
          "type": "number"
        },
        "midAfternoon": {
          "type": "boolean"
        },
        "midMorning": {
          "type": "boolean"
        },
        "uponRising": {
          "type": "boolean"
        },
        "withBreakfast": {
          "type": "boolean"
        },
        "withDinner": {
          "type": "boolean"
        },
        "withLunch": {
          "type": "boolean"
        }
      }
    },
    "TimeZoneDescriptor": {
      "type": "object",
      "properties": {
        "label": {
          "type": "string"
        },
        "name": {
          "type": "string",
          "description": " The time zone name. Use this value when creating or updating resources where a time zone is required, e.g. booking a session."
        },
        "tzName": {
          "type": "string",
          "description": " The IANA DB name for the time zone."
        }
      },
      "additionalProperties": false
    },
    "TransactionStatementReport": {
      "type": "object",
      "properties": {
        "amountRefunded": {
          "$ref": "#/definitions/Money"
        },
        "amountWrittenOff": {
          "$ref": "#/definitions/Money"
        },
        "comparisonPeriod": {
          "$ref": "#/definitions/TransactionStatementReport"
        },
        "creditAmount": {
          "$ref": "#/definitions/Money"
        },
        "grossAmount": {
          "$ref": "#/definitions/Money"
        },
        "netAmount": {
          "$ref": "#/definitions/Money"
        },
        "period": {
          "$ref": "#/definitions/DateTimeRange"
        },
        "totalClientsBilled": {
          "format": "int32",
          "type": "integer"
        },
        "totalClientsRefunded": {
          "format": "int32",
          "type": "integer"
        },
        "totalPayments": {
          "format": "int32",
          "type": "integer"
        },
        "totalRefunds": {
          "format": "int32",
          "type": "integer"
        },
        "totalWriteOffs": {
          "format": "int32",
          "type": "integer"
        },
        "transactions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/IPaymentDataPoint"
          }
        }
      }
    },
    "UnpaidInvoiceSettings": {
      "type": "object",
      "properties": {
        "createReminderAfterFinalNotification": {
          "type": "boolean",
          "description": " When true, a follow-up task reminder is created in Practice Better for the practitioner after the final unpaid invoice notification is sent and the invoice remains unpaid."
        },
        "deliveries": {
          "type": "array",
          "description": " The list of individual reminder deliveries, each specifying how far in advance the reminder is sent and which delivery channel (email or SMS) is used.",
          "items": {
            "$ref": "#/definitions/ReminderDelivery"
          }
        },
        "disabled": {
          "type": "boolean",
          "description": " When true, all automated session reminders are disabled for this practitioner and no reminder notifications are sent to clients."
        }
      },
      "additionalProperties": false
    },
    "User": {
      "type": "object",
      "properties": {
        "emailAddress": {
          "description": " The email address associated with this user's Practice Better account.",
          "type": "string"
        },
        "id": {
          "description": " The unique identifier of the user.",
          "type": "string"
        }
      }
    },
    "UserStorageSettings": {
      "type": "object",
      "properties": {
        "addOnQuota": {
          "type": "integer",
          "description": " Additional storage in bytes purchased as an add-on beyond the subscription plan's base quota.",
          "format": "int64"
        },
        "cloudShareDetails": {
          "type": "array",
          "description": " Details of connected cloud storage integrations (Google Drive, Dropbox), including their sync status.",
          "items": {
            "$ref": "#/definitions/CloudShare"
          }
        },
        "cloudShares": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "readOnly": true
        },
        "lastModified": {
          "type": "string",
          "description": " UTC timestamp when the storage settings were last modified. Null if they have never been modified.",
          "format": "date-time"
        },
        "quota": {
          "type": "integer",
          "description": " The practitioner's base file storage quota in bytes as granted by their subscription plan. Null if no limit is set.",
          "format": "int64"
        },
        "totalQuota": {
          "type": "integer",
          "description": " The combined storage quota in bytes (base plan quota plus any purchased add-on quota).",
          "format": "int64",
          "readOnly": true
        },
        "usedSpace": {
          "type": "integer",
          "description": " The amount of storage currently used in bytes across all files uploaded to the practitioner's account.",
          "format": "int64"
        }
      },
      "additionalProperties": false
    },
    "VirtualAddress": {
      "type": "object",
      "properties": {
        "country": {
          "type": "string",
          "description": " ISO 3166 Alpha-2 country code (e.g. US, AU, GB). See https://www.iban.com/country-codes for the complete list.",
          "maxLength": 3
        },
        "floor": {
          "type": "string",
          "description": " The floor number within a building.",
          "maxLength": 20
        },
        "locality": {
          "type": "string",
          "description": " The city or town name.",
          "maxLength": 40
        },
        "postalCode": {
          "type": "string",
          "description": " The postal or ZIP code.",
          "format": "postal-code",
          "maxLength": 15
        },
        "region": {
          "type": "string",
          "description": " The state, province, or region name.",
          "maxLength": 40
        },
        "street": {
          "type": "string",
          "description": " The street address line (e.g. 123 Main St).",
          "maxLength": 100
        },
        "unit": {
          "type": "string",
          "description": " The suite, apartment, or unit number (e.g. Suite 200, Apt 4B).",
          "maxLength": 20
        }
      },
      "additionalProperties": false
    },
    "WaterIntakeEntry": {
      "type": "object",
      "properties": {
        "amount": {
          "format": "double",
          "type": "number"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "timeZone": {
          "type": "string"
        }
      }
    },
    "WebhookDelivery": {
      "type": "object",
      "properties": {
        "attempt": {
          "type": "integer",
          "description": " Current delivery attempt number (1-based).",
          "format": "int32"
        },
        "attemptedAtUtc": {
          "type": "string",
          "description": " UTC timestamp when the delivery attempt was made.",
          "format": "date-time"
        },
        "companyId": {
          "type": "string",
          "description": " The company ID for tracking and metrics."
        },
        "completedAtUtc": {
          "type": "string",
          "description": " UTC timestamp when the delivery was completed (success or permanent failure).",
          "format": "date-time"
        },
        "consultantId": {
          "type": "string",
          "description": " The practitioner/consultant ID who owns the resource (optional - only for practitioner-scoped resources)."
        },
        "dateCreated": {
          "type": "string",
          "description": " UTC timestamp when the delivery was created.",
          "format": "date-time"
        },
        "dateModified": {
          "type": "string",
          "description": " UTC timestamp when the delivery was last modified.",
          "format": "date-time"
        },
        "durationMs": {
          "type": "integer",
          "description": " Duration of the HTTP request in milliseconds.",
          "format": "int64"
        },
        "endpointUrl": {
          "type": "string",
          "description": " The webhook endpoint URL at the time of delivery."
        },
        "errorMessage": {
          "type": "string",
          "description": " Error message if the delivery failed."
        },
        "eventId": {
          "type": "string",
          "description": " Unique identifier for the event being delivered."
        },
        "eventType": {
          "type": "string",
          "description": " Type of event being delivered (e.g., \"invoice.paid\", \"client.created\")."
        },
        "id": {
          "type": "string",
          "description": " Unique identifier for the webhook delivery."
        },
        "isFailed": {
          "type": "boolean",
          "description": " Whether the delivery permanently failed (Failed or DeadLetterQueue status).",
          "readOnly": true
        },
        "isReplay": {
          "type": "boolean",
          "description": " Whether this delivery was replayed from DLQ."
        },
        "isSuccessful": {
          "type": "boolean",
          "description": " Whether the delivery was successful (HTTP 2xx response).",
          "readOnly": true
        },
        "nextAttemptAtUtc": {
          "type": "string",
          "description": " UTC timestamp when the next delivery attempt should be made.",
          "format": "date-time"
        },
        "properties": {
          "type": "object",
          "description": " Additional metadata properties for extensibility.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "resourceId": {
          "type": "string",
          "description": " The ID of the domain entity being delivered."
        },
        "resourceType": {
          "type": "string",
          "description": " The domain entity type (e.g., \"protocol\", \"invoice\", \"clientrecord\")."
        },
        "responseBodyTrunc": {
          "type": "string",
          "description": " Truncated response body from the webhook endpoint (for debugging)."
        },
        "responseCode": {
          "type": "integer",
          "description": " HTTP response status code from the webhook endpoint.",
          "format": "int32"
        },
        "status": {
          "type": "string",
          "description": " Current status of this delivery (Pending, InProgress, Succeeded, Failed, DeadLetterQueue, Cancelled)."
        },
        "subscriptionId": {
          "type": "string",
          "description": " The webhook subscription ID this delivery belongs to."
        }
      },
      "additionalProperties": false
    },
    "WebhookEventType": {
      "type": "object",
      "description": "Represents a single webhook event type for display in the UI.",
      "properties": {
        "label": {
          "type": "string"
        },
        "value": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "WebhookEventTypeCategory": {
      "type": "object",
      "description": "Represents a category of webhook event types for display in the UI.",
      "properties": {
        "eventTypes": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/WebhookEventType"
          }
        },
        "name": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "WebhookSubscription": {
      "type": "object",
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": " API version for this subscription (e.g., \"2025-08-01\")."
        },
        "companyId": {
          "type": "string",
          "description": " The company ID that owns this webhook subscription."
        },
        "dateCreated": {
          "type": "string",
          "description": " UTC timestamp when the subscription was created.",
          "format": "date-time"
        },
        "dateModified": {
          "type": "string",
          "description": " UTC timestamp when the subscription was last modified.",
          "format": "date-time"
        },
        "description": {
          "type": "string",
          "description": " Optional description or name for this webhook subscription."
        },
        "endpointUrl": {
          "type": "string",
          "description": " The HTTP endpoint URL where webhook notifications are sent."
        },
        "events": {
          "type": "array",
          "description": " List of event types this subscription is subscribed to.\r\nSee GET /api/webhooks/subscription/event/types for all possible values.",
          "items": {
            "type": "string"
          }
        },
        "id": {
          "type": "string",
          "description": " Unique identifier for the webhook subscription."
        },
        "isActive": {
          "type": "boolean",
          "description": " Whether this subscription is currently active."
        },
        "lastSuccessfulDeliveryAtUtc": {
          "type": "string",
          "description": " UTC timestamp of the last successful delivery.",
          "format": "date-time"
        },
        "plaintextSigningSecret": {
          "type": "string",
          "description": " The plaintext webhook signing secret in Base64 format.\r\nThis is ONLY populated during initial creation or rotation for ONE-TIME display to the user.\r\nStore this securely - it cannot be retrieved again after creation.\r\nUse this secret to validate HMAC-SHA256 signatures in the PB-Signature header on event POSTs.\r\nThis is NOT the same as the verificationToken, which is used only for the one-time endpoint\r\nverification handshake (see the Create endpoint documentation)."
        },
        "properties": {
          "type": "object",
          "description": " Additional metadata properties including secret version information.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "status": {
          "type": "string",
          "description": " Current status of the webhook subscription.\r\nAllowed values: \"pendingVerification\", \"active\", \"disabled\", \"verificationFailed\", \"endpointGone\"."
        }
      },
      "additionalProperties": false
    },
    "WeightChangeEntry": {
      "type": "object",
      "properties": {
        "abdomenCircumference": {
          "format": "double",
          "type": "number"
        },
        "bloodGlucose": {
          "format": "double",
          "type": "number"
        },
        "bloodOxygenLevel": {
          "format": "double",
          "type": "number"
        },
        "bloodPressure": {
          "$ref": "#/definitions/BloodPressure"
        },
        "bodyFatPercentage": {
          "format": "double",
          "type": "number"
        },
        "bodyMassIndex": {
          "format": "double",
          "type": "number"
        },
        "calfCircumference": {
          "format": "double",
          "type": "number"
        },
        "calfRightCircumference": {
          "format": "double",
          "type": "number"
        },
        "chestCircumference": {
          "format": "double",
          "type": "number"
        },
        "clientRecordId": {
          "type": "string"
        },
        "comments": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/JournalEntryComment"
          }
        },
        "dateCreated": {
          "format": "date-time",
          "type": "string"
        },
        "dateModified": {
          "format": "date-time",
          "type": "string"
        },
        "entryDate": {
          "$ref": "#/definitions/Date"
        },
        "entryDateTime": {
          "format": "date-time",
          "type": "string"
        },
        "heartRate": {
          "format": "double",
          "type": "number"
        },
        "height": {
          "format": "double",
          "type": "number"
        },
        "hipsCircumference": {
          "format": "double",
          "type": "number"
        },
        "id": {
          "type": "string"
        },
        "journalId": {
          "type": "string"
        },
        "neckCircumference": {
          "format": "double",
          "type": "number"
        },
        "review": {
          "$ref": "#/definitions/JournalEntryReview"
        },
        "reviewed": {
          "type": "boolean",
          "readOnly": true
        },
        "thighCircumference": {
          "format": "double",
          "type": "number"
        },
        "thighRightCircumference": {
          "format": "double",
          "type": "number"
        },
        "timeZone": {
          "type": "string"
        },
        "underBustCircumference": {
          "format": "double",
          "type": "number"
        },
        "upperArmCircumference": {
          "format": "double",
          "type": "number"
        },
        "upperArmRightCircumference": {
          "format": "double",
          "type": "number"
        },
        "waistCircumference": {
          "format": "double",
          "type": "number"
        },
        "weight": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "WellevateRecommendationDescriptor": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string"
        }
      }
    },
    "WholescriptsAccountSettings": {
      "type": "object",
      "properties": {
        "autoCreateRecommendations": {
          "type": "boolean",
          "description": " When true, new protocols default to having the create-recommendation option enabled, so that publishing the protocol automatically creates a WholeScripts recommendation."
        },
        "customMedPaxBoxSku": {
          "type": "string",
          "description": " The SKU of a custom MedPax box configured for this practitioner, if applicable. Null if no custom box is configured."
        },
        "practitionerEmail": {
          "type": "string",
          "description": " The email address of the practitioner in the WholeScripts portal."
        },
        "referralCode": {
          "type": "string",
          "description": " The referral code used when a new WholeScripts patient needs to be created. Determines the discount level and portal access level given to the patient."
        },
        "referralName": {
          "type": "string",
          "description": " The name associated with the referral code."
        },
        "showRecommendationSuggestions": {
          "type": "boolean",
          "description": " When true, default dosing suggestions are shown when a supplement is selected and has default dosing information."
        }
      },
      "additionalProperties": false
    },
    "WholescriptsRecommendationDescriptor": {
      "type": "object",
      "properties": {
        "externalId": {
          "type": "string"
        }
      }
    }
  },
  "securityDefinitions": {
    "oauth2": {
      "type": "oauth2",
      "description": "OAuth2 Client Credentials Grant",
      "flow": "application",
      "tokenUrl": "https://api.practicebetter.io/oauth2/token",
      "scopes": {
        "read": "Read access to protected resources",
        "write": "Write access to protected resources"
      }
    }
  }
}
