{
  "openapi": "3.0.3",
  "info": {
    "title": "ExhibitDay API",
    "version": "1",
    "description": "Read data from an ExhibitDay workspace or push data into it. Every call needs the workspace API key (in ExhibitDay under Workspace Settings > API & Integrations > API Access), sent as the api_key header. Updates change only the parameters you pass in: an empty value leaves a field unchanged (the response then includes warnings), and null (a JSON null or the text \"null\") clears it. Errors return a status response whose HTTP status matches status_code. Full guide: https://api.exhibitday.com/Help/V1",
    "contact": {
      "name": "ExhibitDay Support",
      "email": "support@exhibitday.com",
      "url": "https://www.exhibitday.com"
    },
    "termsOfService": "https://www.exhibitday.com/Terms"
  },
  "externalDocs": {
    "description": "ExhibitDay API documentation",
    "url": "https://api.exhibitday.com/Help/V1"
  },
  "servers": [
    {
      "url": "https://api.exhibitday.com"
    }
  ],
  "security": [
    {
      "ApiKeyHeader": []
    },
    {
      "ApiKeyQuery": []
    }
  ],
  "tags": [
    {
      "name": "Events",
      "description": "Retrieve, add, update and delete events.",
      "externalDocs": {
        "url": "https://api.exhibitday.com/Help/V1?epf=1"
      }
    },
    {
      "name": "Misc. Expenses/Credits",
      "description": "Retrieve, add, update and delete event misc. expenses and credits.",
      "externalDocs": {
        "url": "https://api.exhibitday.com/Help/V1?epf=100"
      }
    },
    {
      "name": "Tasks",
      "description": "Retrieve, add, update and delete tasks and task comments.",
      "externalDocs": {
        "url": "https://api.exhibitday.com/Help/V1?epf=2"
      }
    },
    {
      "name": "Financials",
      "description": "Retrieve event costs and annual miscellaneous expense costs.",
      "externalDocs": {
        "url": "https://api.exhibitday.com/Help/V1?epf=4"
      }
    },
    {
      "name": "References",
      "description": "Retrieve lookup lists such as cost centers, custom fields and tags.",
      "externalDocs": {
        "url": "https://api.exhibitday.com/Help/V1?epf=3"
      }
    }
  ],
  "paths": {
    "/v1/events/info": {
      "get": {
        "operationId": "getEventsInfo",
        "summary": "Retrieve a Single Event by Id",
        "description": "Retrieves information about a specific event (using the \"id\" parameter).\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=1#get-v1-events-info",
        "tags": [
          "Events"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Id of the specific event that you would like to retrieve.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the event inside a JSON array (a list with one item).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the event is not found or the request has another error, return an empty object ({}) with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/events": {
      "get": {
        "operationId": "getEvents",
        "summary": "Retrieve Events",
        "description": "This method retrieves events in your workspace based on various filter criteria. The filter parameters for this method work in conjunction on an “AND-basis”. For example, if you pass in the value “2026-01-30” for filter_by_start_date_greater_than_or_equal_to and the value “1” for filter_by_event_format_id, you’ll get back all the events in your workspace that have their start date greater than or equal to Jan 30, 2026 AND have their format set to In-Person. Also, you can only pass in one value for each filter parameter; this means that you can’t pass in “1, 2” as the value for the filter_by_event_star_rating filter parameter expecting to get back all the events that have a 1-star or a 2-star rating.\n\nfilter_by_custom_event_field__custom_NNNNNN (replace NNNNNN with the id): This is a special filter that lets you filter down your events based on a value of a Custom Text field or a Custom Dropdown field under the Event Information tab, Event Booth tab, or the Special Event tab. To use this filter, you’ll need the field name for the custom text field or custom dropdown field. You can obtain a list of field names for custom event fields in your workspace from the following endpoint: /v1/references/event_custom_fields. For example, if you have configured a custom dropdown field called “Region” under the Event information tab, and its field name is “custom_123456” and you would like to filter your events to include only ones that have “Northeast” selected for that custom dropdown field, pass in “filter_by_custom_event_field__custom_123456” as the parameter name and “Northeast” as its parameter value. Note: You can only filter down based on one custom event field (and it has to be either a custom text field or a custom dropdown field). A request with more than one custom-field filter is rejected with an error. If your workspace has no custom text field or custom dropdown field with the id in the parameter name, the request is rejected with an error.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=1#get-v1-events",
        "tags": [
          "Events"
        ],
        "parameters": [
          {
            "name": "filter_by_event_name_contains_text",
            "in": "query",
            "required": false,
            "description": "Only include events that have the given text in the event Name. For example: If you want to retrieve all the events that have the word “International” in the event Name field, pass in the value “International” for the filter_by_event_name_contains_text parameter. Note: this text search is not case-sensitive.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_by_start_date_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include events that have their start date greater than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_start_date_smaller_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include events that have their start date smaller than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_end_date_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include events that have their end date greater than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_end_date_smaller_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include events that have their end date smaller than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_event_participation_type_id",
            "in": "query",
            "required": false,
            "description": "Only include events that have their participation_type_id equal to the value passed in for this filter parameter. To get a list of available event Participation Type Ids in your workspace, refer to this endpoint: /v1/references/event_participation_types",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_event_format_id",
            "in": "query",
            "required": false,
            "description": "Only include events that have their format_id equal to the value passed in for this filter parameter. The following integer values are accepted (1 for In-Person, 2 for Virtual, 3 for Hybrid)",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_event_star_rating",
            "in": "query",
            "required": false,
            "description": "Only include events that have their star rating equal to the value passed in for this filter parameter. The following integer values are accepted: 0, 1, 2, 3",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "filter_by_event_tag",
            "in": "query",
            "required": false,
            "description": "Only include events that have this tag. For example, you can use this filter to get all the events that have the tag “International”. Note: You can only pass in one tag to filter based on.",
            "schema": {
              "type": "string",
              "maxLength": 150
            }
          },
          {
            "name": "filter_by_integration_metadata_field_1",
            "in": "query",
            "required": false,
            "description": "Only include events that have their integration_metadata_field_1 property equal to the value you pass in for this parameter. Note: An event's integration_metadata_field_1 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular event (e.g., the \"external id\" of the event from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_2",
            "in": "query",
            "required": false,
            "description": "Only include events that have their integration_metadata_field_2 property equal to the value you pass in for this parameter. Note: An event's integration_metadata_field_2 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular event (e.g., the \"external id\" of the event from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_3",
            "in": "query",
            "required": false,
            "description": "Only include events that have their integration_metadata_field_3 property equal to the value you pass in for this parameter. Note: An event's integration_metadata_field_3 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular event (e.g., the \"external id\" of the event from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_4",
            "in": "query",
            "required": false,
            "description": "Only include events that have their integration_metadata_field_4 property equal to the value you pass in for this parameter. Note: An event's integration_metadata_field_4 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular event (e.g., the \"external id\" of the event from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_5",
            "in": "query",
            "required": false,
            "description": "Only include events that have their integration_metadata_field_5 property equal to the value you pass in for this parameter. Note: An event's integration_metadata_field_5 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular event (e.g., the \"external id\" of the event from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "hydrate_tasks",
            "in": "query",
            "required": false,
            "description": "Include the tasks collection for each event in the result set. Note: hydrating the task collection for each event in the results will naturally yield a larger response size and response time. Set the value for this parameter to true only if you need to include the list of tasks for each event in the result set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "hydrate_task_sections_list",
            "in": "query",
            "required": false,
            "description": "Include the list of available task sections for each event in the result set. Note: hydrating the event task section collection for each event in the results will naturally yield a larger response size and response time. Set the value for this parameter to true only if you need to include the list of task sections for each event in the result set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "hydrate_event_misc_expenses_and_credits",
            "in": "query",
            "required": false,
            "description": "Include the list of miscellaneous expenses & credits for each event in the result set. Note: hydrating the event miscellaneous expenses & credits collection for each event in the results will naturally yield a larger response size and response time. Set the value for this parameter to true only if you need to include the list of miscellaneous expenses and credits for each event in the result set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "hydrate_custom_fields",
            "in": "query",
            "required": false,
            "description": "Include the event custom fields (i.e. custom fields that have been added to your workspace) for each event in the result set. Note: hydrating the event custom field collection for each event in the results will naturally yield a larger response size and response time. Set the value for this parameter to true only if you need to include the custom field values for each event in the result set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "event_id",
            "in": "query",
            "required": false,
            "description": "Only include the event that has this id. The result is still a list: it holds that one event, or no events if your workspace has no event with that id. To retrieve a single event object, use /v1/events/info instead. A value that isn't an event id number is rejected with an error.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_event_start_date_category",
            "in": "query",
            "required": false,
            "description": "Only include the events in one category: \"all\" (all events), \"upcoming\" (events that end today or later, including events that are in progress), \"past\" (events that ended before today), or a year such as \"2026\" (events that start in that year). \"Today\" is based on your workspace's time zone. When you pass in one of these values, the start date and end date filters are ignored. To get the list of categories for your workspace (with a category for every year that has events), use /v1/references/event_start_date_categories. Any other value is rejected with an error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_by_custom_field_value_setting_id",
            "in": "query",
            "required": false,
            "description": "Another way to filter events by the value of a Custom Text field or a Custom Dropdown field: pass in the field's id as filter_by_custom_field_value_setting_id and the value to look for as filter_by_custom_field_value_setting_value. You can get the ids of the custom fields you can filter by from /v1/references/filterable_event_custom_fields. Only the events whose value for that field equals the value you pass in are included (the comparison is not case-sensitive and ignores leading and trailing spaces). An id that isn't a custom text field or custom dropdown field in your workspace is rejected with an error.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_custom_field_value_setting_value",
            "in": "query",
            "required": false,
            "description": "The value to look for in the custom field given in filter_by_custom_field_value_setting_id (see that parameter).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "$result_sort",
            "in": "query",
            "required": false,
            "description": "Sorts the events by when they were added or last updated. Accepted values: create_timestamp_asc, create_timestamp_desc, last_update_timestamp_asc, last_update_timestamp_desc. Without this parameter, events are sorted by start date (earliest first).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$return_event_lites",
            "in": "query",
            "required": false,
            "description": "Return a shorter version of each event (id, exhibitday_url, name, start and end dates, participation type, format, star rating, created and last update timestamps, and the integration metadata fields). Use it for faster responses when you only need to identify events. Note: the hydrate parameters don't apply to these shorter events.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_last_update_timestamp_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include events that were added or changed on or after this date and time, for example 2026-10-14T18:30:00 (a date alone, such as 2026-10-14, means midnight). Responses give event_last_update_timestamp in UTC (it ends in Z), and that value can be passed back unchanged; a value without an offset is read as US Eastern time, and any other offset (e.g., 2026-10-14T18:30:00-04:00) is converted. To sync changes, save the latest event_last_update_timestamp you receive and pass it in next time (events changed at exactly that time come back again, so skip ids you already have). Deleted events are not returned. Any other value is rejected with an error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$limit",
            "in": "query",
            "required": false,
            "description": "The most events to return (a whole number of 1 or more). Use it with $offset to read a long list in pages: total_records in the response counts every matching event and has_more is true while more pages follow (the X-Total-Count header carries the total too). Without $limit, every matching event is returned.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "$offset",
            "in": "query",
            "required": false,
            "description": "How many events to skip before the first one returned (a whole number; 0 by default). For the next page, add the number of events you received to $offset.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found, total_records, has_more and list_type; the X-Total-Count header still gives the total), or \"wrapped_in_array\" to get the usual response inside a JSON array.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the request has an error (e.g., an invalid filter value), return an empty list with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Total-Count": {
                "$ref": "#/components/headers/X-Total-Count"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/EventsList"
                    },
                    {
                      "$ref": "#/components/schemas/EventLitesList"
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "post": {
        "operationId": "postEvents",
        "summary": "Add an Event",
        "description": "If successful, the response will contain an object representing the newly added event.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=1#post-v1-events",
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEventsRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PostEventsRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "A unique value (e.g. a UUID) for this create. If you retry with the same key within 24 hours, you get the first response again instead of a second record. A 409 idempotency_key_in_use means the first request is still running (retry shortly with the same key); 409 idempotency_key_indeterminate means it never finished (check whether the record exists, then use a new key). The same key with a different request is refused with 400 idempotency_key_reused. A key is 1 to 255 visible ASCII characters, without spaces.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "delete": {
        "operationId": "deleteEvents",
        "summary": "Delete an Event",
        "description": "Permanently deletes an event. It cannot be undone.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=1#delete-v1-events",
        "tags": [
          "Events"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "The id of the event you would like to delete.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "patch": {
        "operationId": "patchEvents",
        "summary": "Update an Event",
        "description": "To update an event, only pass in the properties that you want to update. To clear a property, pass in null; an empty value leaves the property unchanged (the warnings property in the response names any such parameters). If the update is successful, the message property in the response will contain a list of event properties that were actually changed as a result of this API update call.\n\nUpdating Event Custom Fields: In order to update the value of an event's custom field (i.e., a specific custom field that you've added to events in your workspace), you can pass in that custom field's field_name as a parameter to this method. For example, if there is a Custom Text Field configured for the Booth tab in your workspace, and that Custom Text Field's field_name is \"custom_12345\", you can update the value for that Custom Field by passing \"custom_12345\" as a parameter to this function. The same rules apply as for every other field: an empty value leaves the custom field unchanged (and adds a warning), and null (or the text \"null\") clears it. The response's list of changed properties names custom fields by their label. Note: Only event custom text fields, custom dropdown fields and custom URL fields are allowed to be updated via the API. A multi-line custom text field takes plain text, like the notes parameters: any html tags in the value are stripped, new line characters get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b). Use the /v1/references/event_custom_fields endpoint to get the field_name for the custom fields that are configured in your workspace.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=1#patch-v1-events",
        "tags": [
          "Events"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventsRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/events/miscexpensecredit": {
      "get": {
        "operationId": "getEventsMiscexpensecredit",
        "summary": "Retrieve a Single Event Miscellaneous Expense/Credit by Id",
        "description": "Retrieves information about a specific event miscellaneous expense/credit (using the \"id\" parameter).\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=100#get-v1-events-miscexpensecredit",
        "tags": [
          "Misc. Expenses/Credits"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Id of the specific event miscellaneous expense/credit that you would like to retrieve.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the miscellaneous expense/credit inside a JSON array (a list with one item).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the miscellaneous expense/credit is not found or the request has another error, return null with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventMiscExpenseCredit"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "post": {
        "operationId": "postEventsMiscexpensecredit",
        "summary": "Add a New Event Miscellaneous Expense/Credit",
        "description": "Documentation: https://api.exhibitday.com/Help/V1?epf=100#post-v1-events-miscexpensecredit",
        "tags": [
          "Misc. Expenses/Credits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostEventsMiscexpensecreditRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PostEventsMiscexpensecreditRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "A unique value (e.g. a UUID) for this create. If you retry with the same key within 24 hours, you get the first response again instead of a second record. A 409 idempotency_key_in_use means the first request is still running (retry shortly with the same key); 409 idempotency_key_indeterminate means it never finished (check whether the record exists, then use a new key). The same key with a different request is refused with 400 idempotency_key_reused. A key is 1 to 255 visible ASCII characters, without spaces.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventMiscExpenseCredit"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "patch": {
        "operationId": "patchEventsMiscexpensecredit",
        "summary": "Update an Event Miscellaneous Expense/Credit",
        "description": "To update an event miscellaneous expense/credit, only pass in the properties that you want to update. A miscellaneous expense/credit cannot be moved to another event. To clear a property, pass in null; an empty value leaves the property unchanged (the warnings property in the response names any such parameters). If the update is successful, the message property in the response will contain a list of event miscellaneous expense/credit properties that were actually changed.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=100#patch-v1-events-miscexpensecredit",
        "tags": [
          "Misc. Expenses/Credits"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventsMiscexpensecreditRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchEventsMiscexpensecreditRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "delete": {
        "operationId": "deleteEventsMiscexpensecredit",
        "summary": "Delete an Event Miscellaneous Expense/Credit",
        "description": "Permanently deletes an event's miscellaneous expense/credit. It cannot be undone.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=100#delete-v1-events-miscexpensecredit",
        "tags": [
          "Misc. Expenses/Credits"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "The id of the event miscellaneous expense/credit you would like to delete.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/events/miscexpensecredits": {
      "get": {
        "operationId": "getEventsMiscexpensecredits",
        "summary": "Find Event Miscellaneous Expense(s)/Credit(s)",
        "description": "Retrieves Event Miscellaneous Expenses/Credits using search filters. At least one filter must be passed in: filter_by_event_id, one of the filter_by_integration_metadata_field filters, or filter_by_last_update_timestamp_greater_than_or_equal_to.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=100#get-v1-events-miscexpensecredits",
        "tags": [
          "Misc. Expenses/Credits"
        ],
        "parameters": [
          {
            "name": "filter_by_event_id",
            "in": "query",
            "required": false,
            "description": "Only include miscellaneous expenses/credits for a given event.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_integration_metadata_field_1",
            "in": "query",
            "required": false,
            "description": "Only include event miscellaneous expenses/credits that have their integration_metadata_field_1 property equal to the value you pass in for this parameter. Note: The integration_metadata_field_1 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_2",
            "in": "query",
            "required": false,
            "description": "Only include event miscellaneous expenses/credits that have their integration_metadata_field_2 property equal to the value you pass in for this parameter. Note: The integration_metadata_field_2 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_3",
            "in": "query",
            "required": false,
            "description": "Only include event miscellaneous expenses/credits that have their integration_metadata_field_3 property equal to the value you pass in for this parameter. Note: The integration_metadata_field_3 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_4",
            "in": "query",
            "required": false,
            "description": "Only include event miscellaneous expenses/credits that have their integration_metadata_field_4 property equal to the value you pass in for this parameter. Note: The integration_metadata_field_4 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_5",
            "in": "query",
            "required": false,
            "description": "Only include event miscellaneous expenses/credits that have their integration_metadata_field_5 property equal to the value you pass in for this parameter. Note: The integration_metadata_field_5 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_last_update_timestamp_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include miscellaneous expenses/credits that were added or changed on or after this date and time, for example 2026-10-14T18:30:00 (a date alone, such as 2026-10-14, means midnight). Responses give event_misc_expense_credit_last_update_timestamp in UTC (it ends in Z), and that value can be passed back unchanged; a value without an offset is read as US Eastern time, and any other offset (e.g., 2026-10-14T18:30:00-04:00) is converted. To sync changes, save the latest event_misc_expense_credit_last_update_timestamp you receive and pass it in next time (miscellaneous expenses/credits changed at exactly that time come back again, so skip ids you already have). Deleted miscellaneous expenses/credits are not returned. Any other value is rejected with an error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$limit",
            "in": "query",
            "required": false,
            "description": "The most miscellaneous expenses/credits to return (a whole number of 1 or more). Use it with $offset to read a long list in pages: total_records in the response counts every matching miscellaneous expense/credit and has_more is true while more pages follow (the X-Total-Count header carries the total too). Without $limit, every matching miscellaneous expense/credit is returned.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "$offset",
            "in": "query",
            "required": false,
            "description": "How many miscellaneous expenses/credits to skip before the first one returned (a whole number; 0 by default). For the next page, add the number of miscellaneous expenses/credits you received to $offset.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found, total_records, has_more and list_type; the X-Total-Count header still gives the total), or \"wrapped_in_array\" to get the usual response inside a JSON array.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the request has an error (e.g., no filter or an invalid filter value), return an empty list with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Total-Count": {
                "$ref": "#/components/headers/X-Total-Count"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventMiscExpenseCreditList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/tasks/info": {
      "get": {
        "operationId": "getTasksInfo",
        "summary": "Retrieve a Single Task by Id",
        "description": "Retrieves information about a specific task (using the \"id\" parameter).\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#get-v1-tasks-info",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Id of the specific task that you would like to retrieve.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the task inside a JSON array (a list with one item).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the task is not found or the request has another error, return an empty object ({}) with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/tasks": {
      "get": {
        "operationId": "getTasks",
        "summary": "Retrieve Tasks",
        "description": "This method retrieves tasks in your workspace based on various filter criteria. The filter parameters for this method work in conjunction on an “AND-basis”. For example, if you pass in the value “true” for filter_by_no_due_date and value “12345” for filter_by_event_id, you’ll get back all the tasks with no due date for the event that has an Id of 12345. Also, you can only pass in one value for each filter parameter; this means that you can’t pass in “12345, 56789” as the value for the filter_by_event_id filter parameter expecting to get back all the tasks for the two events 12345 and 56789.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#get-v1-tasks",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "filter_by_event_id",
            "in": "query",
            "required": false,
            "description": "Only include tasks from this given event.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_general_tasks_only",
            "in": "query",
            "required": false,
            "description": "Only include general tasks (tasks on the main task board that do not belong to a particular event). Note: this filter cannot be used in conjunction with the filter_by_event_id filter.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_incomplete_only",
            "in": "query",
            "required": false,
            "description": "If you pass in the value \"true\" for this parameter, the result will only include tasks that are NOT marked as Completed.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_completed_only",
            "in": "query",
            "required": false,
            "description": "If you pass in the value \"true\" for this parameter, the result will only include tasks that are marked as Completed.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_no_due_date",
            "in": "query",
            "required": false,
            "description": "If you pass in the value \"true\" for this parameter, the result will only include tasks that do not have a due date set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_due_date_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have a due date greater than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD. You can also pass in \"today\", \"yesterday\" or \"tomorrow\" (based on your workspace's time zone). Note: this filter cannot be used in conjunction with the filter_by_no_due_date filter.",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_due_date_smaller_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have a due date smaller than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD. You can also pass in \"today\", \"yesterday\" or \"tomorrow\" (based on your workspace's time zone). Note: this filter cannot be used in conjunction with the filter_by_no_due_date filter.",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_has_assignee",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have an assignee. Unassigned tasks will get excluded.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_assignee_user_id",
            "in": "query",
            "required": false,
            "description": "Only include tasks that are assigned to this user. You can get a list of UserIds in your workspace from the /v1/references/users_and_resources endpoint. Note: If you want to retrieve the tasks that are unassigned, include this parameter and pass in the word \"null\" as the value for it.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_by_task_name_contains_text",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have the given text in the task Name. For example: If you want to retrieve all the tasks that have the word “order” in the task Name field, pass in the value “order” for the filter_by_task_name_contains_text parameter. Note: this text search is not case-sensitive.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_by_integration_metadata_field_1",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have their integration_metadata_field_1 property equal to the value you pass in for this parameter. Note: A task's integration_metadata_field_1 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular task (e.g., the \"external id\" of the task from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_2",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have their integration_metadata_field_2 property equal to the value you pass in for this parameter. Note: A task's integration_metadata_field_2 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular task (e.g., the \"external id\" of the task from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_3",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have their integration_metadata_field_3 property equal to the value you pass in for this parameter. Note: A task's integration_metadata_field_3 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular task (e.g., the \"external id\" of the task from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_4",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have their integration_metadata_field_4 property equal to the value you pass in for this parameter. Note: A task's integration_metadata_field_4 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular task (e.g., the \"external id\" of the task from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "filter_by_integration_metadata_field_5",
            "in": "query",
            "required": false,
            "description": "Only include tasks that have their integration_metadata_field_5 property equal to the value you pass in for this parameter. Note: A task's integration_metadata_field_5 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular task (e.g., the \"external id\" of the task from another system you're integrating with).",
            "schema": {
              "type": "string",
              "maxLength": 3000
            }
          },
          {
            "name": "hydrate_task_comments",
            "in": "query",
            "required": false,
            "description": "Include the comments collection for each task in the result set. Note: hydrating the comments collection for each task in the results will naturally yield a larger response size and response time. Set the value for this parameter to true only if you need to include the list of comments for each task in the result set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_completer_user_id",
            "in": "query",
            "required": false,
            "description": "Only include the tasks that were completed by this user. Use the user's id from /v1/references/users_and_resources. You can only pass in one id.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$result_sort",
            "in": "query",
            "required": false,
            "description": "Sorts the tasks by when they were added or last updated. Accepted values: create_timestamp_asc, create_timestamp_desc, last_update_timestamp_asc, last_update_timestamp_desc. Without this parameter, tasks are grouped by event (in event start date order) and listed in their task board order within each event.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$return_task_lites",
            "in": "query",
            "required": false,
            "description": "Return a shorter version of each task (id, exhibitday_url, display_rank, name, due_date, assignee_user_id, is_completed, completion time and user, the event, created by, created and last update timestamps, and the integration metadata fields). Use it for faster responses when you only need to identify tasks. Note: task comments are not included in these shorter tasks. In them the completion time is named task_completed_timestamp_est, but it is UTC like every other timestamp (the same value as task_completed_timestamp in the full task).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_last_update_timestamp_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include tasks that were added or changed on or after this date and time, for example 2026-10-14T18:30:00 (a date alone, such as 2026-10-14, means midnight). Responses give task_last_update_timestamp in UTC (it ends in Z), and that value can be passed back unchanged; a value without an offset is read as US Eastern time, and any other offset (e.g., 2026-10-14T18:30:00-04:00) is converted. To sync changes, save the latest task_last_update_timestamp you receive and pass it in next time (tasks changed at exactly that time come back again, so skip ids you already have). Deleted tasks are not returned. Any other value is rejected with an error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$limit",
            "in": "query",
            "required": false,
            "description": "The most tasks to return (a whole number of 1 or more). Use it with $offset to read a long list in pages: total_records in the response counts every matching task and has_more is true while more pages follow (the X-Total-Count header carries the total too). Without $limit, every matching task is returned.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "$offset",
            "in": "query",
            "required": false,
            "description": "How many tasks to skip before the first one returned (a whole number; 0 by default). For the next page, add the number of tasks you received to $offset.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found, total_records, has_more and list_type; the X-Total-Count header still gives the total), or \"wrapped_in_array\" to get the usual response inside a JSON array.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the request has an error (e.g., an invalid filter value), return an empty list with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Total-Count": {
                "$ref": "#/components/headers/X-Total-Count"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/TasksList"
                    },
                    {
                      "$ref": "#/components/schemas/TaskLitesList"
                    }
                  ]
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "post": {
        "operationId": "postTasks",
        "summary": "Add a Task",
        "description": "The response will contain an object representing the newly added task.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#post-v1-tasks",
        "tags": [
          "Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTasksRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PostTasksRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "A unique value (e.g. a UUID) for this create. If you retry with the same key within 24 hours, you get the first response again instead of a second record. A 409 idempotency_key_in_use means the first request is still running (retry shortly with the same key); 409 idempotency_key_indeterminate means it never finished (check whether the record exists, then use a new key). The same key with a different request is refused with 400 idempotency_key_reused. A key is 1 to 255 visible ASCII characters, without spaces.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Task"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "delete": {
        "operationId": "deleteTasks",
        "summary": "Delete a Task",
        "description": "Permanently deletes a task. It cannot be undone.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#delete-v1-tasks",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "The id of the task you would like to delete.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "patch": {
        "operationId": "patchTasks",
        "summary": "Update a Task",
        "description": "To update a task, only pass in the properties that you want to update. To clear a property, pass in null; an empty value leaves the property unchanged (the warnings property in the response names any such parameters). If the update is successful, the message property in the response will contain a list of task properties that were actually changed.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#patch-v1-tasks",
        "tags": [
          "Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchTasksRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchTasksRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/tasks/comments": {
      "get": {
        "operationId": "getTasksComments",
        "summary": "Retrieve Task Comments",
        "description": "This method retrieves task comments in your workspace based on various filter criteria. The filter parameters for this method work in conjunction on an “AND-basis”. For example, if you pass in the value “12345” for filter_by_event_id, you’ll get back the comments of all the tasks of the event that has an Id of 12345, and if you pass in a task id for filter_by_task_id, you’ll get back the comments of that task only. You can only pass in one value for each filter parameter. If you don’t pass in any filter, all the task comments in your workspace are returned.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#get-v1-tasks-comments",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "filter_by_event_id",
            "in": "query",
            "required": false,
            "description": "Only include task comments for tasks from this given event.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_task_id",
            "in": "query",
            "required": false,
            "description": "Only include task comments for this specific task.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "hydrate_task",
            "in": "query",
            "required": false,
            "description": "Include the task object for each task comment in the result set. Note: hydrating the task object for each task comment in the results will naturally yield a larger response size and response time. Set the value for this parameter to true only if you need to include the task object for each comment in the result set.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "filter_by_commenter_user_id",
            "in": "query",
            "required": false,
            "description": "Only include the comments made by this user. Use the user's id from /v1/references/users_and_resources.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$result_sort",
            "in": "query",
            "required": false,
            "description": "Sorts the comments by when they were added or last updated. Accepted values: create_timestamp_asc, create_timestamp_desc, last_update_timestamp_asc, last_update_timestamp_desc. Without this parameter, comments are grouped by task (in the same order as the Retrieve Tasks method) and listed oldest first within each task.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "filter_by_last_update_timestamp_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include task comments that were added or changed on or after this date and time, for example 2026-10-14T18:30:00 (a date alone, such as 2026-10-14, means midnight). Responses give comment_last_update_timestamp in UTC (it ends in Z), and that value can be passed back unchanged; a value without an offset is read as US Eastern time, and any other offset (e.g., 2026-10-14T18:30:00-04:00) is converted. To sync changes, save the latest comment_last_update_timestamp you receive and pass it in next time (task comments changed at exactly that time come back again, so skip ids you already have). Deleted task comments are not returned. Any other value is rejected with an error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$limit",
            "in": "query",
            "required": false,
            "description": "The most task comments to return (a whole number of 1 or more). Use it with $offset to read a long list in pages: total_records in the response counts every matching task comment and has_more is true while more pages follow (the X-Total-Count header carries the total too). Without $limit, every matching task comment is returned.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "$offset",
            "in": "query",
            "required": false,
            "description": "How many task comments to skip before the first one returned (a whole number; 0 by default). For the next page, add the number of task comments you received to $offset.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found, total_records, has_more and list_type; the X-Total-Count header still gives the total), or \"wrapped_in_array\" to get the usual response inside a JSON array.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Total-Count": {
                "$ref": "#/components/headers/X-Total-Count"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskCommentsList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/tasks/comment": {
      "get": {
        "operationId": "getTasksComment",
        "summary": "Retrieve a Single Task Comment by Id",
        "description": "Retrieves information about a specific task comment (using the \"id\" parameter).\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#get-v1-tasks-comment",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "Id of the specific task comment that you would like to retrieve.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskComment"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "post": {
        "operationId": "postTasksComment",
        "summary": "Add a Comment to a Task",
        "description": "The response will contain an object representing the newly added task comment.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#post-v1-tasks-comment",
        "tags": [
          "Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostTasksCommentRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PostTasksCommentRequest"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "A unique value (e.g. a UUID) for this create. If you retry with the same key within 24 hours, you get the first response again instead of a second record. A 409 idempotency_key_in_use means the first request is still running (retry shortly with the same key); 409 idempotency_key_indeterminate means it never finished (check whether the record exists, then use a new key). The same key with a different request is refused with 400 idempotency_key_reused. A key is 1 to 255 visible ASCII characters, without spaces.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 255,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "Idempotent-Replayed": {
                "$ref": "#/components/headers/Idempotent-Replayed"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaskCommentReferenced"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "409": {
            "$ref": "#/components/responses/Conflict"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "patch": {
        "operationId": "patchTasksComment",
        "summary": "Update a Task Comment",
        "description": "Updates the text of a given comment on a task. A comment cannot be moved to another task.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#patch-v1-tasks-comment",
        "tags": [
          "Tasks"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchTasksCommentRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchTasksCommentRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      },
      "delete": {
        "operationId": "deleteTasksComment",
        "summary": "Delete a Task Comment",
        "description": "Permanently deletes a task comment. It cannot be undone.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=2#delete-v1-tasks-comment",
        "tags": [
          "Tasks"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": true,
            "description": "The Id of the task comment you would like to delete.",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StatusResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/financials/event_costs": {
      "get": {
        "operationId": "getFinancialsEventCosts",
        "summary": "Retrieve Event Costs",
        "description": "If a specific Event Id is passed in (using the \"filter_by_event_id\" parameter), then only the costs for that event are returned. Otherwise, all costs for all events are returned. The \"cost_subtype\" property contains the selected Booth Service type or the Event Activity type. Other Booth Services use \"Other\"; Other activities use their category name, including \"Presentation (Other)\". General activities and other cost types return null. The subtype is separate from \"details\", which describes the item.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=4#get-v1-financials-event_costs",
        "tags": [
          "Financials"
        ],
        "parameters": [
          {
            "name": "filter_by_event_id",
            "in": "query",
            "required": false,
            "description": "Id of a specific event that you would like to retrieve costs for.",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "filter_by_event_start_date_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include costs for events that have their start date greater than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_event_start_date_smaller_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include costs for events that have their start date smaller than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_event_end_date_greater_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include costs for events that have their end date greater than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_event_end_date_smaller_than_or_equal_to",
            "in": "query",
            "required": false,
            "description": "Only include costs for events that have their end date smaller than or equal to the value passed in for this filter parameter. Use this date format: YYYY-MM-DD",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "filter_by_event_start_date_category",
            "in": "query",
            "required": false,
            "description": "Only include the costs of the events in one category: \"all\" (all events), \"upcoming\" (events that end today or later, including events that are in progress), \"past\" (events that ended before today), or a year such as \"2026\" (events that start in that year). \"Today\" is based on your workspace's time zone. When you pass in one of these values, the event date filters are ignored. To get the list of categories for your workspace, use /v1/references/event_start_date_categories. Any other value is rejected with an error.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$limit",
            "in": "query",
            "required": false,
            "description": "The most cost records to return (a whole number of 1 or more). Use it with $offset to read a long list in pages: total_records in the response counts every matching cost record and has_more is true while more pages follow (the X-Total-Count header carries the total too). Without $limit, every matching cost record is returned.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "$offset",
            "in": "query",
            "required": false,
            "description": "How many cost records to skip before the first one returned (a whole number; 0 by default). For the next page, add the number of cost records you received to $offset.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found, total_records, has_more and list_type; the X-Total-Count header still gives the total), or \"wrapped_in_array\" to get the usual response inside a JSON array.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the request has an error (e.g., an invalid filter value), return an empty list with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Total-Count": {
                "$ref": "#/components/headers/X-Total-Count"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCostsList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/financials/misc_annual_expense_costs": {
      "get": {
        "operationId": "getFinancialsMiscAnnualExpenseCosts",
        "summary": "Retrieve Miscellaneous Annual Expense Costs",
        "description": "If a specific Budget Year is passed in (using the \"budget_year\" parameter, e.g. 2026), then only the miscellaneous annual expense costs for that budget year are returned. Otherwise, all miscellaneous annual expense costs for all budget years are returned.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=4#get-v1-financials-misc_annual_expense_costs",
        "tags": [
          "Financials"
        ],
        "parameters": [
          {
            "name": "budget_year",
            "in": "query",
            "required": false,
            "description": "The specific budget year that you would like to retrieve miscellaneous annual expense costs for (e.g., 2026).",
            "schema": {
              "type": "number"
            }
          },
          {
            "name": "$limit",
            "in": "query",
            "required": false,
            "description": "The most cost records to return (a whole number of 1 or more). Use it with $offset to read a long list in pages: total_records in the response counts every matching cost record and has_more is true while more pages follow (the X-Total-Count header carries the total too). Without $limit, every matching cost record is returned.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "$offset",
            "in": "query",
            "required": false,
            "description": "How many cost records to skip before the first one returned (a whole number; 0 by default). For the next page, add the number of cost records you received to $offset.",
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found, total_records, has_more and list_type; the X-Total-Count header still gives the total), or \"wrapped_in_array\" to get the usual response inside a JSON array.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "$on_error_return_empty_result",
            "in": "query",
            "required": false,
            "description": "If the request has an error (e.g., an invalid filter value), return an empty list with HTTP status 200 instead of an error response.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Total-Count": {
                "$ref": "#/components/headers/X-Total-Count"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MiscAnnualExpenseCostsList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/event_participation_types": {
      "get": {
        "operationId": "getReferencesEventParticipationTypes",
        "summary": "Event Participation Types",
        "description": "Returns a list of available event participation types (i.e., Committed, Considering, Not Going, etc.) which can be used when creating or updating an event. If you have created custom event participation types in your ExhibitDay workspace, they will also get returned.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-event_participation_types",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found and list_type).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventParticipationTypesList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/event_custom_fields": {
      "get": {
        "operationId": "getReferencesEventCustomFields",
        "summary": "Event Custom Fields",
        "description": "Returns a list of available custom event fields (custom fields that have been added to events) in your ExhibitDay workspace. Note: whenever you retrieve an event, the values for all of its custom fields are listed in the custom_fields property of the event (pass hydrate_custom_fields=true to include them). The list also contains layout items (labels and dividers) whose field_type is empty; they hold no value.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-event_custom_fields",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCustomFieldsList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/cost_centers": {
      "get": {
        "operationId": "getReferencesCostCenters",
        "summary": "Cost Centers",
        "description": "Returns a list of cost centers that are configured in your ExhibitDay workspace.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-cost_centers",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CostCenter"
                  }
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/event_cost_types": {
      "get": {
        "operationId": "getReferencesEventCostTypes",
        "summary": "Event Cost Types",
        "description": "Returns a list of event cost types. Type 9 is Event Activities and represents costs recorded under Playbook activities.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-event_cost_types",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventCostTypeList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/payment_statuses": {
      "get": {
        "operationId": "getReferencesPaymentStatuses",
        "summary": "Payment Statuses",
        "description": "Returns a list of Payment Status types.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-payment_statuses",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentStatusList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/event_tags": {
      "get": {
        "operationId": "getReferencesEventTags",
        "summary": "Event Tags",
        "description": "Returns a list of all distinct event tags in your workspace.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-event_tags",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found and list_type).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventTagsList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/users_and_resources": {
      "get": {
        "operationId": "getReferencesUsersAndResources",
        "summary": "User and Resources",
        "description": "Returns a list of users and resources in your ExhibitDay workspace.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-users_and_resources",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "filter_by_can_have_tasks_assigned",
            "in": "query",
            "required": false,
            "description": "Pass in true to only include the users who can have tasks assigned to them (resources, and users who can't be assigned tasks, are left out).",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "$result_format",
            "in": "query",
            "required": false,
            "description": "Pass in \"array\" to get the results as a plain JSON array (without records_found and list_type).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AspNetUsersList"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/workspace_info": {
      "get": {
        "operationId": "getReferencesWorkspaceInfo",
        "summary": "Workspace Info",
        "description": "Returns basic information about the ExhibitDay workspace that your API key belongs to: its id and name, and the number of events, tasks and assets in it. This is a quick way to check that an API key works and which workspace it belongs to.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-workspace_info",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkspaceInfo"
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/event_start_date_categories": {
      "get": {
        "operationId": "getReferencesEventStartDateCategories",
        "summary": "Event Start Date Categories",
        "description": "Returns the categories you can pass in for the filter_by_event_start_date_category parameter of the Retrieve Events and Retrieve Event Costs methods, as id/value pairs: all, upcoming, past, and one category for every year in which your workspace has events (most recent year first). Pass in the id.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-event_start_date_categories",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValuePair"
                  }
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/filterable_event_custom_fields": {
      "get": {
        "operationId": "getReferencesFilterableEventCustomFields",
        "summary": "Filterable Event Custom Fields",
        "description": "Returns the event custom fields that you can filter events by (Custom Text fields and Custom Dropdown fields), as id/value pairs. The value names the field and its event tab. Pass in an id as the filter_by_custom_field_value_setting_id parameter of the Retrieve Events method.\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-filterable_event_custom_fields",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValuePair"
                  }
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    },
    "/v1/references/budget_years": {
      "get": {
        "operationId": "getReferencesBudgetYears",
        "summary": "Budget Years",
        "description": "Returns the years for which your workspace has a yearly budget, as id/value pairs (most recent year first).\n\nDocumentation: https://api.exhibitday.com/Help/V1?epf=3#get-v1-references-budget_years",
        "tags": [
          "References"
        ],
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "The ETag of a response you already have: while the data is unchanged the API answers 304 Not Modified without a body.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              },
              "ETag": {
                "$ref": "#/components/headers/ETag"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdValuePair"
                  }
                }
              }
            }
          },
          "304": {
            "description": "Not Modified: If-None-Match named the current ETag, so there is no body.",
            "headers": {
              "ETag": {
                "$ref": "#/components/headers/ETag"
              },
              "X-Request-Id": {
                "$ref": "#/components/headers/X-Request-Id"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalError"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "api_key",
        "description": "The workspace API key."
      },
      "ApiKeyQuery": {
        "type": "apiKey",
        "in": "query",
        "name": "api_key",
        "description": "The workspace API key, in the query string."
      }
    },
    "headers": {
      "X-RateLimit-Limit": {
        "description": "The number of calls the workspace may make per second.",
        "schema": {
          "type": "integer"
        }
      },
      "X-RateLimit-Remaining": {
        "description": "The number of calls left in the current one-second window.",
        "schema": {
          "type": "integer"
        }
      },
      "X-RateLimit-Reset": {
        "description": "Seconds until the current window ends and the remaining count resets.",
        "schema": {
          "type": "integer"
        }
      },
      "Retry-After": {
        "description": "Seconds to wait before retrying (on 429 Too Many Requests).",
        "schema": {
          "type": "integer"
        }
      },
      "X-Request-Id": {
        "description": "This request's id (also request_id in error bodies). Quote it when you contact support.",
        "schema": {
          "type": "string"
        }
      },
      "ETag": {
        "description": "A fingerprint of the response body. Send it back in If-None-Match to get 304 Not Modified while the data is unchanged.",
        "schema": {
          "type": "string"
        }
      },
      "X-Total-Count": {
        "description": "Every record that matches the request, before $offset and $limit (total_records in the body).",
        "schema": {
          "type": "integer"
        }
      },
      "Idempotent-Replayed": {
        "description": "\"true\" when this is the remembered response to an earlier request with the same Idempotency-Key (nothing was created again).",
        "schema": {
          "type": "string"
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad Request: a missing or invalid parameter, or a change that is not allowed (error_code says which).",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/X-Request-Id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatusResponse"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized: the api_key is missing or invalid, or API access is not enabled for the workspace.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/X-Request-Id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatusResponse"
            }
          }
        }
      },
      "NotFound": {
        "description": "Not Found: no object with that id in your workspace, or an unknown URL or method.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/X-Request-Id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatusResponse"
            }
          }
        }
      },
      "Conflict": {
        "description": "Conflict: idempotency_key_in_use (a request with the same Idempotency-Key is still being processed; retry after a moment with the same key) or idempotency_key_indeterminate (an earlier request with that key did not finish; check whether it succeeded, then retry with a new key).",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/X-Request-Id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatusResponse"
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "Too Many Requests: the rate limit was exceeded.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/X-Request-Id"
          },
          "Retry-After": {
            "$ref": "#/components/headers/Retry-After"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatusResponse"
            }
          }
        }
      },
      "InternalError": {
        "description": "Unexpected Internal Error.",
        "headers": {
          "X-Request-Id": {
            "$ref": "#/components/headers/X-Request-Id"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/StatusResponse"
            }
          }
        }
      }
    },
    "schemas": {
      "Event": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "start_date": {
            "type": "string",
            "nullable": true
          },
          "end_date": {
            "type": "string",
            "nullable": true
          },
          "participation_type_id": {
            "type": "integer",
            "format": "int32"
          },
          "participation_type": {
            "type": "string",
            "nullable": true
          },
          "format_id": {
            "type": "integer",
            "format": "int32"
          },
          "format": {
            "type": "string",
            "nullable": true
          },
          "star_rating": {
            "type": "integer",
            "format": "int32"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "website_url": {
            "type": "string",
            "nullable": true
          },
          "venue_name": {
            "type": "string",
            "nullable": true
          },
          "venue_address": {
            "type": "string",
            "nullable": true
          },
          "venue_location_display_name": {
            "type": "string",
            "nullable": true
          },
          "venue_address_latitude": {
            "type": "string",
            "nullable": true
          },
          "venue_address_longitude": {
            "type": "string",
            "nullable": true
          },
          "booth_size": {
            "type": "string",
            "nullable": true
          },
          "booth_number": {
            "type": "string",
            "nullable": true
          },
          "booth_reservation_status_id": {
            "type": "integer",
            "format": "int32"
          },
          "booth_reservation_status": {
            "type": "string",
            "nullable": true
          },
          "booth_reserve_by_date": {
            "type": "string",
            "nullable": true
          },
          "booth_date_reserved": {
            "type": "string",
            "nullable": true
          },
          "budget_booth_reservation": {
            "type": "number"
          },
          "budget_booth_services": {
            "type": "number"
          },
          "budget_attendee_registrations": {
            "type": "number"
          },
          "budget_travel": {
            "type": "number"
          },
          "budget_giveaways": {
            "type": "number"
          },
          "budget_shipments": {
            "type": "number"
          },
          "budget_event_activities": {
            "type": "number"
          },
          "budget_misc_expenses": {
            "type": "number"
          },
          "budget_sponsorships": {
            "type": "number"
          },
          "total_sum_event_budgets": {
            "type": "number"
          },
          "cost_booth_reservation": {
            "type": "number"
          },
          "cost_booth_services": {
            "type": "number"
          },
          "cost_attendee_registrations": {
            "type": "number"
          },
          "cost_travel_reservations": {
            "type": "number"
          },
          "cost_giveaways": {
            "type": "number"
          },
          "cost_shipments": {
            "type": "number"
          },
          "cost_event_activities": {
            "type": "number"
          },
          "cost_misc_expenses": {
            "type": "number"
          },
          "cost_sponsorships": {
            "type": "number"
          },
          "total_sum_event_costs": {
            "type": "number"
          },
          "event_notes": {
            "type": "string",
            "nullable": true
          },
          "booth_notes": {
            "type": "string",
            "nullable": true
          },
          "budget_notes": {
            "type": "string",
            "nullable": true
          },
          "roi_notes": {
            "type": "string",
            "nullable": true
          },
          "roi_num_leads": {
            "type": "integer",
            "format": "int64"
          },
          "roi_num_impressions_booth": {
            "type": "integer",
            "format": "int64"
          },
          "roi_num_impressions_sponsorships": {
            "type": "integer",
            "format": "int64"
          },
          "roi_num_impressions_media": {
            "type": "integer",
            "format": "int64"
          },
          "roi_num_meetings_existing_customers": {
            "type": "integer",
            "format": "int64"
          },
          "roi_num_meetings_new_customers": {
            "type": "integer",
            "format": "int64"
          },
          "roi_amount_actual_sales": {
            "type": "number"
          },
          "roi_amount_potential_sales": {
            "type": "number"
          },
          "event_created_timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "event_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "event_created_by": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          },
          "custom_fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomEventFieldReferenced"
            },
            "nullable": true
          },
          "task_sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskSectionReferenced"
            },
            "nullable": true
          },
          "tasks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskReferenced"
            },
            "nullable": true
          },
          "misc_expenses_credits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventMiscExpenseCreditReferenced"
            },
            "nullable": true
          },
          "integration_metadata_field_1": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "AspNetUserReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "CustomEventFieldReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "label": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "field_name": {
            "type": "string",
            "nullable": true
          },
          "field_type": {
            "type": "string",
            "nullable": true
          },
          "field_event_tab": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TaskSectionReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "display_rank": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "TaskReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "event_task_section_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "event_task_section": {
            "type": "string",
            "nullable": true
          },
          "display_rank": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "due_date": {
            "type": "string",
            "nullable": true
          },
          "assignee": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          },
          "is_completed": {
            "type": "boolean"
          },
          "task_completed_timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "task_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "task_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "EventMiscExpenseCreditReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "is_credit": {
            "type": "boolean"
          },
          "amount": {
            "type": "number"
          },
          "amount_cost_center_breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CostCenterBreakdown"
            },
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "payment_due_date": {
            "type": "string",
            "nullable": true
          },
          "payment_status": {
            "$ref": "#/components/schemas/PaymentStatusReferenced"
          },
          "next_partial_payment_due_date": {
            "type": "string",
            "nullable": true
          },
          "payment_notes": {
            "type": "string",
            "nullable": true
          },
          "event_misc_expense_credit_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "event_misc_expense_credit_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CostCenterBreakdown": {
        "type": "object",
        "nullable": true,
        "properties": {
          "cost_center_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "cost_center": {
            "type": "string",
            "nullable": true
          },
          "charge": {
            "type": "number"
          }
        }
      },
      "PaymentStatusReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EventsList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            },
            "nullable": true
          }
        }
      },
      "EventLitesList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventLite"
            },
            "nullable": true
          }
        }
      },
      "EventLite": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "start_date": {
            "type": "string",
            "nullable": true
          },
          "end_date": {
            "type": "string",
            "nullable": true
          },
          "participation_type_id": {
            "type": "integer",
            "format": "int32"
          },
          "participation_type": {
            "type": "string",
            "nullable": true
          },
          "format_id": {
            "type": "integer",
            "format": "int32"
          },
          "format": {
            "type": "string",
            "nullable": true
          },
          "star_rating": {
            "type": "integer",
            "format": "int32"
          },
          "event_created_timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "event_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "integration_metadata_field_1": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostEventsRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 500,
            "description": "The name of the event."
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "description": "Event Start Date (format: YYYY-MM-DD). If the start date is after the end date, the API swaps the dates before creating the event."
          },
          "end_date": {
            "type": "string",
            "format": "date",
            "description": "Event End Date (format: YYYY-MM-DD). If the start date is after the end date, the API swaps the dates before creating the event."
          },
          "format_id": {
            "type": "integer",
            "default": 1,
            "description": "Integer representing the format_id for the event (1 for In-Person, 2 for Virtual, 3 for Hybrid)"
          },
          "participation_type_id": {
            "type": "integer",
            "default": 1,
            "description": "Integer representing the participation type of the event (1: Committed, 2: Considering, 3: Not Going). Note: you can use the following endpoint to retrieve a list of available participation_type_id's: /v1/references/event_participation_types"
          },
          "integration_metadata_field_1": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_2": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_3": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_4": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_5": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field."
          }
        },
        "required": [
          "name",
          "start_date",
          "end_date"
        ]
      },
      "StatusResponse": {
        "type": "object",
        "nullable": true,
        "properties": {
          "status_code": {
            "type": "integer",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "nullable": true
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "description": "Only when an empty value left a parameter unchanged (see the help page)."
          },
          "error_code": {
            "type": "string",
            "nullable": true,
            "description": "Errors only: what kind of error this is. invalid_request (400): A parameter is missing or has an invalid value (error_params names it when the API can tell); malformed_json (400): The request body is not valid JSON; not_allowed (400): The change is not allowed for that record in ExhibitDay (e.g., the event's tasks or its deletion are locked, or its Misc. Expenses & Credits tab is hidden); idempotency_key_reused (400): The Idempotency-Key was already used with a different request. Use a new key for a new request; missing_api_key (401): No api_key was sent; invalid_api_key (401): The api_key is not valid; api_access_disabled (401): API access is not enabled for the workspace; not_found (404): No record with that id exists in your workspace; unknown_endpoint (404): The URL or HTTP method is not part of the API; idempotency_key_in_use (409): A request with the same Idempotency-Key is still being processed. Retry after a moment; idempotency_key_indeterminate (409): A previous request with this Idempotency-Key did not finish and its outcome is unknown, so this retry was not run (to avoid creating a duplicate). Check whether the earlier request succeeded; to try again, use a new Idempotency-Key; rate_limited (429): Too many requests. Wait the number of seconds in the Retry-After header, then retry; internal_error (500): An unexpected error occurred. Quote the request_id when you contact support. New codes may be added; handle an unknown code by its HTTP status."
          },
          "error_params": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true,
            "description": "Errors only: the request parameters the errors refer to ([] when the API cannot tell)."
          },
          "request_id": {
            "type": "string",
            "nullable": true,
            "description": "Errors only: this request's id, also in the X-Request-Id header. Quote it when you contact support."
          }
        }
      },
      "PatchEventsRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the event you would like to update."
          },
          "name": {
            "type": "string",
            "maxLength": 500,
            "description": "The name of the event.",
            "nullable": true
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "description": "Event Start Date (format: YYYY-MM-DD). If the start date is after the end date, the API swaps the dates before saving. Dates omitted from the request use the event's existing values for this comparison.",
            "nullable": true
          },
          "end_date": {
            "type": "string",
            "format": "date",
            "description": "Event End Date (format: YYYY-MM-DD). If the start date is after the end date, the API swaps the dates before saving. Dates omitted from the request use the event's existing values for this comparison.",
            "nullable": true
          },
          "participation_type_id": {
            "type": "integer",
            "description": "Integer representing the participation_type_id for the event (1: Committed, 2: Considering, 3: Not Going). Note: you can use the following endpoint to retrieve a list of available participation_type_id's: /v1/references/event_participation_types",
            "nullable": true
          },
          "format_id": {
            "type": "integer",
            "description": "Integer representing the FormatId for the event (1 for In-Person, 2 for Virtual, 3 for Hybrid)",
            "nullable": true
          },
          "star_rating": {
            "type": "number",
            "description": "Star Rating for the event (0, 1, 2, or 3).",
            "nullable": true
          },
          "event_tags": {
            "type": "string",
            "description": "A comma-separated list of tags for the event (e.g., \"International, West Coast, 2026\"). This REPLACES the entire set of tags on the event with the list you pass in, and the order you pass them in is the order they are displayed. Each individual tag has a maximum length of 30 characters and is truncated if longer. Duplicates (case-insensitive), blank entries between tags and any HTML markup are ignored; a value that contains no tags at all (e.g., \",\") is rejected. Because commas separate the list, an individual tag cannot itself contain a comma. To remove all tags from the event, pass in null.",
            "nullable": true
          },
          "website_url": {
            "type": "string",
            "maxLength": 2000,
            "description": "URL of the event website. Must be a well-formed http or https URL; if you leave out the scheme, http:// is added (e.g., example.com is stored as http://example.com).",
            "nullable": true
          },
          "venue_name": {
            "type": "string",
            "maxLength": 300,
            "description": "The name of the venue for the event.",
            "nullable": true
          },
          "venue_address": {
            "type": "string",
            "maxLength": 1000,
            "description": "The venue address for the event.",
            "nullable": true
          },
          "booth_size": {
            "type": "string",
            "maxLength": 150,
            "description": "The size of your booth for the event (e.g., 10x20). A value longer than 150 characters is rejected.",
            "nullable": true
          },
          "booth_number": {
            "type": "string",
            "maxLength": 150,
            "description": "Your booth number for the event. A value longer than 150 characters is rejected.",
            "nullable": true
          },
          "event_notes": {
            "type": "string",
            "description": "Event Notes (under the Event Information tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).",
            "nullable": true
          },
          "booth_notes": {
            "type": "string",
            "description": "Booth Notes (under the event Booth tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).",
            "nullable": true
          },
          "budget_notes": {
            "type": "string",
            "description": "Budget Notes (under the event Budget tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).",
            "nullable": true
          },
          "roi_notes": {
            "type": "string",
            "description": "ROI Notes (under the event ROI tab). Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).",
            "nullable": true
          },
          "budget_booth_reservation": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for reserving the booth for the event.",
            "nullable": true
          },
          "budget_booth_services": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for all the booth services for the event.",
            "nullable": true
          },
          "budget_attendee_registrations": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for event registration / attendee tickets.",
            "nullable": true
          },
          "budget_travel": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for travel and lodging for the event.",
            "nullable": true
          },
          "budget_giveaways": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for your giveaways (swag and raffle items) for the event.",
            "nullable": true
          },
          "budget_shipments": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for all shipments for the event.",
            "nullable": true
          },
          "budget_event_activities": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for costs recorded under Playbook activities for the event.",
            "nullable": true
          },
          "budget_misc_expenses": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for all miscellaneous expenses for the event.",
            "nullable": true
          },
          "budget_sponsorships": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the budget for all sponsorships for the event.",
            "nullable": true
          },
          "roi_num_leads": {
            "type": "number",
            "description": "An integer (greater than or equal to 0) that represents the number of leads generated from this event.",
            "nullable": true
          },
          "roi_num_impressions_booth": {
            "type": "number",
            "description": "An integer (greater than or equal to 0) that represents the number of booth walk-bys / impressions (i.e., estimated total number of people who saw your booth at this event).",
            "nullable": true
          },
          "roi_num_impressions_sponsorships": {
            "type": "number",
            "description": "An integer (greater than or equal to 0) that represents the number of sponsorship impressions (i.e., estimated total number of people reached through all your sponsorships for this event).",
            "nullable": true
          },
          "roi_num_impressions_media": {
            "type": "number",
            "description": "An integer (greater than or equal to 0) that represents the number of social/traditional media impressions (i.e., estimated total number of people reached via social media or traditional media coverage).",
            "nullable": true
          },
          "roi_num_meetings_existing_customers": {
            "type": "number",
            "description": "An integer (greater than or equal to 0) that represents the number of meetings with existing customers (i.e., total number of meetings your team had with your existing customers at this event).",
            "nullable": true
          },
          "roi_num_meetings_new_customers": {
            "type": "number",
            "description": "An integer (greater than or equal to 0) that represents the number of meetings with new/potential customers (i.e., total number of meetings your team had with new/potential customers at this event).",
            "nullable": true
          },
          "roi_amount_actual_sales": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the actual sales amount (attributable to this event and already closed).",
            "nullable": true
          },
          "roi_amount_potential_sales": {
            "type": "number",
            "description": "A number (greater than or equal to 0.00) that represents the additional opportunity / potential sales amount (attributable to this event, but yet to be closed).",
            "nullable": true
          },
          "integration_metadata_field_1": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular event. For example, you can use it to store the \"external id\" of the event (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of events (using the /v1/events endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          }
        },
        "required": [
          "id"
        ]
      },
      "EventMiscExpenseCredit": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "is_credit": {
            "type": "boolean"
          },
          "amount": {
            "type": "number"
          },
          "amount_cost_center_breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CostCenterBreakdown"
            },
            "nullable": true
          },
          "notes": {
            "type": "string",
            "nullable": true
          },
          "payment_due_date": {
            "type": "string",
            "nullable": true
          },
          "payment_status": {
            "$ref": "#/components/schemas/PaymentStatusReferenced"
          },
          "next_partial_payment_due_date": {
            "type": "string",
            "nullable": true
          },
          "payment_notes": {
            "type": "string",
            "nullable": true
          },
          "event": {
            "$ref": "#/components/schemas/EventReferenced"
          },
          "event_misc_expense_credit_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "event_misc_expense_credit_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "integration_metadata_field_1": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EventReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "start_date": {
            "type": "string",
            "nullable": true
          },
          "end_date": {
            "type": "string",
            "nullable": true
          },
          "participation_type_id": {
            "type": "integer",
            "format": "int32"
          },
          "participation_type": {
            "type": "string",
            "nullable": true
          },
          "format_id": {
            "type": "integer",
            "format": "int32"
          },
          "format": {
            "type": "string",
            "nullable": true
          },
          "event_created_timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "event_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "EventMiscExpenseCreditList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventMiscExpenseCredit"
            },
            "nullable": true
          }
        }
      },
      "PostEventsMiscexpensecreditRequest": {
        "type": "object",
        "properties": {
          "event_id": {
            "type": "integer",
            "description": "The id of the event you would like to add the miscellaneous expense/credit to."
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "description": "A short description of the miscellaneous expense/credit. Longer values are truncated to 1000 characters."
          },
          "is_credit": {
            "type": "boolean",
            "default": false,
            "description": "The is_credit flag indicates whether or not the miscellaneous expense/credit you’re adding is a credit. For example, if you’re adding a partial credit the event organizer issued for a booth service, set the is_credit flag to true. Accepted values: true or false (also yes/no, 1/0); any other value is rejected with an error."
          },
          "amount": {
            "type": "number",
            "description": "Use the amount field to specify the amount of the miscellaneous expense/credit. The value of this field should be a decimal with no currency symbols or commas (e.g., 11250.75). If the miscellaneous expense/credit you’re adding is a credit, pass in a positive number for the amount field, and set the is_credit flag to true. If you leave amount out, the amount is the sum of the charges in amount_cost_center_breakdown (0.00 when there is none)."
          },
          "amount_cost_center_breakdown": {
            "type": "string",
            "description": "The cost center allocations as a JSON array of cost_center_id and charge values. Use cost center IDs from /v1/references/cost_centers, or null for Unassigned (responses show it as cost_center \"Not Specified\"). Charges must be nonnegative and must not exceed the amount in total; any unallocated remainder is assigned to Unassigned. If amount is omitted, the charges determine the total. Invalid JSON, unknown cost centers, negative charges, and allocations exceeding the amount return HTTP 400 without saving changes. For example, to allocate $100, send [{\"cost_center_id\": 123456, \"charge\": 60.00}, {\"cost_center_id\": null, \"charge\": 40.00}]."
          },
          "payment_status_id": {
            "type": "integer",
            "default": 0,
            "description": "The Payment Status Id for the miscellaneous expense/credit. Note: Payment status only applies to miscellaneous expenses. If you pass in a payment_status_id for a miscellaneous credit (i.e., when the is_credit flag is set to true), it will be ignored. You can use the following endpoint to retrieve a list of available payment_status_id's: /v1/references/payment_statuses. Any other value is rejected with an error."
          },
          "payment_due_date": {
            "type": "string",
            "format": "date",
            "description": "Payment due date in YYYY-MM-DD format. Note: Payment Due Date only applies to miscellaneous expenses. If you pass in a payment_due_date for a miscellaneous credit (i.e., when the is_credit flag is set to true), it will be ignored. A value that is not a valid date is rejected with an error."
          },
          "next_payment_due_date": {
            "type": "string",
            "format": "date",
            "description": "The next payment due date in YYYY-MM-DD format. This field only applies to expenses with payment_status_id 2 (Partially Paid). It is ignored for credits and other payment statuses. Responses use next_partial_payment_due_date; either name is accepted as input. If both names are supplied, their values must match. A value that is not a valid date is rejected with an error."
          },
          "next_partial_payment_due_date": {
            "type": "string",
            "format": "date",
            "description": "An input alias for next_payment_due_date. The same payment-status rules apply. If both names are supplied, their values must match. A value that is not a valid date is rejected with an error."
          },
          "payment_notes": {
            "type": "string",
            "maxLength": 200,
            "description": "Notes about the payment for the expense. Note: Payment notes only apply to miscellaneous expenses. If you pass in a payment_notes for a miscellaneous credit (i.e., when the is_credit flag is set to true), it will be ignored."
          },
          "notes": {
            "type": "string",
            "description": "Notes about the miscellaneous expense/credit. Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b)."
          },
          "integration_metadata_field_1": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_1 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with)."
          },
          "integration_metadata_field_2": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_2 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with)."
          },
          "integration_metadata_field_3": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_3 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with)."
          },
          "integration_metadata_field_4": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_4 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with)."
          },
          "integration_metadata_field_5": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_5 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with)."
          }
        },
        "required": [
          "event_id",
          "description"
        ]
      },
      "PatchEventsMiscexpensecreditRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The id of the event miscellaneous expense/credit you would like to update."
          },
          "description": {
            "type": "string",
            "maxLength": 1000,
            "description": "A short description of the miscellaneous expense/credit. Longer values are truncated to 1000 characters.",
            "nullable": true
          },
          "is_credit": {
            "type": "boolean",
            "description": "The is_credit flag indicates whether or not the miscellaneous expense/credit is a credit. Accepted values: true or false (also yes/no, 1/0); any other value is rejected with an error. A blank value leaves the current setting unchanged.",
            "nullable": true
          },
          "amount": {
            "type": "number",
            "description": "Use the amount field to specify the amount of the miscellaneous expense/credit. The value of this field should be a decimal with no currency symbols or commas (e.g., 11250.75). To remove the amount (making it 0.00), pass in null.",
            "nullable": true
          },
          "amount_cost_center_breakdown": {
            "type": "string",
            "description": "The cost center allocations as a JSON array of cost_center_id and charge values. Use cost center IDs from /v1/references/cost_centers, or null for Unassigned (responses show it as cost_center \"Not Specified\"). Charges must be nonnegative and must not exceed the amount in total; any unallocated remainder is assigned to Unassigned. If amount is omitted, the charges determine the total. Invalid JSON, unknown cost centers, negative charges, and allocations exceeding the amount return HTTP 400 without saving changes. To remove the cost center allocations (so the whole amount is Unassigned), pass in null. For example, to allocate $100, send [{\"cost_center_id\": 123456, \"charge\": 60.00}, {\"cost_center_id\": null, \"charge\": 40.00}].",
            "nullable": true
          },
          "payment_status_id": {
            "type": "integer",
            "description": "The Payment Status Id for the miscellaneous expense/credit. Note: Payment status only applies to miscellaneous expenses. If you pass in a payment_status_id for a miscellaneous credit (i.e., when the is_credit flag is set to true), it will be ignored. You can use the following endpoint to retrieve a list of available payment_status_id's: /v1/references/payment_statuses. Any other value is rejected with an error. To reset the payment status to 0 (Not Specified), pass in null.",
            "nullable": true
          },
          "payment_due_date": {
            "type": "string",
            "format": "date",
            "description": "Payment due date in YYYY-MM-DD format. Note: Payment Due Date only applies to miscellaneous expenses. If you pass in a payment_due_date for a miscellaneous credit (i.e., when the is_credit flag is set to true), it will be ignored. A value that is not a valid date is rejected with an error.",
            "nullable": true
          },
          "next_payment_due_date": {
            "type": "string",
            "format": "date",
            "description": "The next payment due date in YYYY-MM-DD format. This field only applies to expenses with payment_status_id 2 (Partially Paid). It is ignored for credits and other payment statuses. Responses use next_partial_payment_due_date; either name is accepted as input. If both names are supplied, their values must match. A value that is not a valid date is rejected with an error.",
            "nullable": true
          },
          "next_partial_payment_due_date": {
            "type": "string",
            "format": "date",
            "description": "An input alias for next_payment_due_date. The same payment-status rules apply. If both names are supplied, their values must match. A value that is not a valid date is rejected with an error.",
            "nullable": true
          },
          "payment_notes": {
            "type": "string",
            "maxLength": 200,
            "description": "Notes about the payment for the expense. Note: Payment notes only apply to miscellaneous expenses. If you pass in a payment_notes for a miscellaneous credit (i.e., when the is_credit flag is set to true), it will be ignored.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Notes about the miscellaneous expense/credit. Only accepts plain text. Any html tags in the value you pass in will be stripped. New line characters will get replaced with a <br/> tag, and the text is stored HTML-encoded, so it is returned as HTML (a < b comes back as a &lt; b).",
            "nullable": true
          },
          "integration_metadata_field_1": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_1 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_2 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_3 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_4 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "maxLength": 3000,
            "description": "The integration_metadata_field_5 property is an integration-specific text field only accessible via the ExhibitDay API. This field is typically used to store metadata or information about a particular miscellaneous expense/credit (e.g., the \"external id\" of the expense from another system you're integrating with).",
            "nullable": true
          }
        },
        "required": [
          "id"
        ]
      },
      "Task": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "event_task_section_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "event_task_section": {
            "type": "string",
            "nullable": true
          },
          "display_rank": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "due_date": {
            "type": "string",
            "nullable": true
          },
          "assignee": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          },
          "is_completed": {
            "type": "boolean"
          },
          "task_completed_timestamp": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "task_completed_by": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "comments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskCommentReferenced"
            },
            "nullable": true
          },
          "event": {
            "$ref": "#/components/schemas/EventReferenced"
          },
          "task_created_by": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          },
          "task_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "task_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "integration_metadata_field_1": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "TaskCommentReferenced": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "comment_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "comment_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "commenter": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          }
        }
      },
      "TasksList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Task"
            },
            "nullable": true
          }
        }
      },
      "TaskLitesList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskLite"
            },
            "nullable": true
          }
        }
      },
      "TaskLite": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "exhibitday_url": {
            "type": "string",
            "nullable": true
          },
          "display_rank": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "due_date": {
            "type": "string",
            "nullable": true
          },
          "assignee_user_id": {
            "type": "string",
            "nullable": true
          },
          "is_completed": {
            "type": "boolean"
          },
          "task_completed_timestamp_est": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "task_completed_by_user_id": {
            "type": "string",
            "nullable": true
          },
          "event": {
            "$ref": "#/components/schemas/EventReferenced"
          },
          "task_created_by_user_id": {
            "type": "string",
            "nullable": true
          },
          "task_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "task_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "integration_metadata_field_1": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PostTasksRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 400,
            "description": "The name/short description of the task."
          },
          "event_id": {
            "type": "integer",
            "description": "The id of the event you would like to add the task under. If this value is not provided, the task will be added as a general (non-event-specific) task in your workspace (under the main Task Board)."
          },
          "task_section_id": {
            "type": "integer",
            "description": "The id of the event task section that the task should be placed under. Leave this value blank if you don't want to place/categorize the task under a specific event task section. Note: you can get a list of available Task Section Ids for a given event using the /v1/events/info endpoint."
          },
          "is_completed": {
            "type": "boolean",
            "default": false,
            "description": "Boolean representing whether or not the task has been completed: true or false (also accepted: yes/no, 1/0, completed/incomplete). Any other value is rejected with an error."
          },
          "due_date": {
            "type": "string",
            "format": "date",
            "description": "Task due date (format: YYYY-MM-DD)."
          },
          "assignee_user_id": {
            "type": "string",
            "description": "The id of the user you would like to assign the task to. If you want the task to be unassigned, leave the value for this parameter blank. To get a list of all the user ids in your workspace, use the /v1/references/users_and_resources API endpoint. Users that can have tasks assigned to them will have their can_have_tasks_assigned property set to true."
          },
          "details": {
            "type": "string",
            "description": "The details/description of the task. Send plain text: it is stored HTML-encoded and returned as HTML, so a < b comes back as a &lt; b and each line break as <br/>. Details written in the web app editor come back as that editor rich-text HTML."
          },
          "integration_metadata_field_1": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_2": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_3": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_4": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field."
          },
          "integration_metadata_field_5": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field."
          }
        },
        "required": [
          "name"
        ]
      },
      "PatchTasksRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The Id of the task you would like to update."
          },
          "name": {
            "type": "string",
            "maxLength": 400,
            "description": "The name/short description of the task.",
            "nullable": true
          },
          "event_id": {
            "type": "integer",
            "description": "The id of the event you would like to move the task to. To make it a general task (one that is not under any event), pass in null. A moved task is placed at the top of its new task list and taken out of its task section; to place it under one of the new event's task sections, also pass in task_section_id. Links between the task and items of its previous event are removed. A task cannot be moved into or out of an event whose tasks are locked.",
            "nullable": true
          },
          "task_section_id": {
            "type": "integer",
            "description": "The id of the event task section that the task should be placed under. If you don't want to place/categorize the task under a specific event task section, pass in the value \"null\" for this parameter. Note: you can get a list of available Task Section Ids for a given event using the /v1/events/info endpoint.",
            "nullable": true
          },
          "is_completed": {
            "type": "boolean",
            "description": "Boolean representing whether or not the task has been completed: true or false (also accepted: yes/no, 1/0, completed/incomplete). Any other value is rejected with an error.",
            "nullable": true
          },
          "due_date": {
            "type": "string",
            "format": "date",
            "description": "Task due date in YYYY-MM-DD format. To remove the due date, pass in null (JSON null or the string \"null\"). Omit this parameter, or pass in an empty value, to leave the due date unchanged.",
            "nullable": true
          },
          "assignee_user_id": {
            "type": "string",
            "description": "The User Id of the user you would like to assign the task to. If you want the task to be unassigned, pass in the value \"null\" for this parameter. To get a list of all the User Ids in your workspace, use the /v1/references/users_and_resources API endpoint; users who can have tasks assigned to them will have their can_have_tasks_assigned property set to true.",
            "nullable": true
          },
          "details": {
            "type": "string",
            "description": "The details/description of the task. Send plain text: it is stored HTML-encoded and returned as HTML, so a < b comes back as a &lt; b and each line break as <br/>. Details written in the web app editor come back as that editor rich-text HTML. To clear this field, pass in null (JSON null or the string \"null\").",
            "nullable": true
          },
          "integration_metadata_field_1": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_2": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_3": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_4": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          },
          "integration_metadata_field_5": {
            "type": "string",
            "maxLength": 3000,
            "description": "This is an integration-specific text field only accessible via the ExhibitDay API. This field can be used to store whatever metadata or information you'd like about a particular task. For example, you can use it to store the \"external id\" of the task (from another system you're integrating with). Or, you can use it to store the last sync timestamp. Note: when you retrieve a list of tasks (using the /v1/tasks endpoint), you can filter down the results by the value of this field.",
            "nullable": true
          }
        },
        "required": [
          "id"
        ]
      },
      "TaskCommentsList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaskComment"
            },
            "nullable": true
          }
        }
      },
      "TaskComment": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "comment": {
            "type": "string",
            "nullable": true
          },
          "comment_created_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "comment_last_update_timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "commenter": {
            "$ref": "#/components/schemas/AspNetUserReferenced"
          },
          "event_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "task_id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "task": {
            "$ref": "#/components/schemas/TaskReferenced"
          }
        }
      },
      "PostTasksCommentRequest": {
        "type": "object",
        "properties": {
          "task_id": {
            "type": "integer",
            "description": "The id of the task you would like to add the comment to."
          },
          "comment": {
            "type": "string",
            "description": "The text of the comment you would like to add. Only accepts plain text. Any HTML tags will be stripped. Newline characters are displayed as line breaks in ExhibitDay and remain newline characters in API responses. Accepts up to 15,000 characters (some symbols count as two characters)."
          }
        },
        "required": [
          "task_id",
          "comment"
        ]
      },
      "PatchTasksCommentRequest": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The Id of the task comment you would like to update."
          },
          "comment": {
            "type": "string",
            "description": "The text that will replace the existing comment, including any formatting previously applied in ExhibitDay. Only accepts plain text. Any HTML tags will be stripped. Newline characters are displayed as line breaks in ExhibitDay and remain newline characters in API responses. Accepts up to 15,000 characters (some symbols count as two characters). A comment cannot be blank: an empty value (or null) is rejected with an error."
          }
        },
        "required": [
          "id",
          "comment"
        ]
      },
      "EventCostsList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventCost"
            },
            "nullable": true
          }
        }
      },
      "EventCost": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "cost_type_id": {
            "type": "integer",
            "format": "int32"
          },
          "cost_type": {
            "type": "string",
            "nullable": true
          },
          "cost_subtype": {
            "type": "string",
            "nullable": true
          },
          "details": {
            "type": "string",
            "nullable": true
          },
          "amount": {
            "type": "number"
          },
          "amount_cost_center_breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CostCenterBreakdown"
            },
            "nullable": true
          },
          "payment_due_date": {
            "type": "string",
            "nullable": true
          },
          "payment_status": {
            "$ref": "#/components/schemas/PaymentStatusReferenced"
          },
          "next_partial_payment_due_date": {
            "type": "string",
            "nullable": true
          },
          "payment_notes": {
            "type": "string",
            "nullable": true
          },
          "event": {
            "$ref": "#/components/schemas/EventReferenced"
          }
        }
      },
      "MiscAnnualExpenseCostsList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "total_records": {
            "type": "integer",
            "format": "int32"
          },
          "has_more": {
            "type": "boolean"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MiscAnnualExpenseCost"
            },
            "nullable": true
          }
        }
      },
      "MiscAnnualExpenseCost": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "budget_year": {
            "type": "integer",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "planned_amount": {
            "type": "number"
          },
          "actual_amount": {
            "type": "number"
          },
          "actual_amount_cost_center_breakdown": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CostCenterBreakdown"
            },
            "nullable": true
          }
        }
      },
      "EventParticipationTypesList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventParticipationType"
            },
            "nullable": true
          }
        }
      },
      "EventParticipationType": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EventCustomFieldsList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkspaceCustomEventFieldSetting"
            },
            "nullable": true
          }
        }
      },
      "WorkspaceCustomEventFieldSetting": {
        "type": "object",
        "nullable": true,
        "properties": {
          "field_name": {
            "type": "string",
            "nullable": true
          },
          "event_tab": {
            "type": "string",
            "nullable": true
          },
          "field_type": {
            "type": "string",
            "nullable": true
          },
          "field_label": {
            "type": "string",
            "nullable": true
          },
          "is_hidden": {
            "type": "boolean"
          }
        }
      },
      "CostCenter": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64",
            "nullable": true
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "EventCostTypeList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EventCostType"
            },
            "nullable": true
          }
        }
      },
      "EventCostType": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "PaymentStatusList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PaymentStatusReferenced"
            },
            "nullable": true
          }
        }
      },
      "EventTagsList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          }
        }
      },
      "AspNetUsersList": {
        "type": "object",
        "nullable": true,
        "properties": {
          "records_found": {
            "type": "integer",
            "format": "int32"
          },
          "list_type": {
            "type": "string",
            "nullable": true
          },
          "list_data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AspNetUser"
            },
            "nullable": true
          }
        }
      },
      "AspNetUser": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "role": {
            "type": "string",
            "nullable": true
          },
          "can_have_tasks_assigned": {
            "type": "boolean"
          },
          "display_name": {
            "type": "string",
            "nullable": true
          },
          "last_name": {
            "type": "string",
            "nullable": true
          },
          "first_name": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "type": "string",
            "nullable": true
          },
          "phone_number": {
            "type": "string",
            "nullable": true
          },
          "organization": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "admin_notes": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "WorkspaceInfo": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "integer",
            "format": "int64"
          },
          "name": {
            "type": "string",
            "nullable": true
          },
          "num_events": {
            "type": "integer",
            "format": "int32"
          },
          "num_tasks": {
            "type": "integer",
            "format": "int32"
          },
          "num_assets": {
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "IdValuePair": {
        "type": "object",
        "nullable": true,
        "properties": {
          "id": {
            "type": "string",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        }
      }
    }
  }
}